我有一个小问题,我有这些参数:
df <- data.frame(Equip = c(1,1,1,1,1,2,2,2,2,2),
Notif = c(1,1,1,2,2,3,3,3,3,4),
Component = c("Dichtung","Motor","Getriebe","Service","Motor","Lüftung","Dichtring","Motor","Getriebe","Dichtring"),
rank= c(1 , 1 , 1 , 2 , 2 , 1 , 1 , 1 , 1 , 2))
现在我想进行比较,只寻找一个Equip
,如果第一个中使用Components
的rank
,与第二个rank
相同(只是相同Equip
):
2种方式:
第一个:所有组件都一样吗?
任何(至少 1 个)组件是否相同?
我需要一个高度自动化的解决方案,因为我的数据集有超过 150k 行。
所需的答案可能是一个只有布尔表达式的向量,包括 TRUE 和 FALSE。
所以对于上面的例子,
answer <- c(TRUE,TRUE)
因为 Equip 1 rank 1 Component: Motor "AND" Equip 1 rank2 也是 Component: Motor。(1 所需方式的示例)
非常感谢您的帮助 =)
我使用了评论功能,但我无法显示问题,因为我想显示代码。
请对此感到抱歉..
原始数据有超过 2 个等级现在我想一步将等级 x 与等级 x+1 结合起来,因为这是使用的,为此我在函数中使用了一个 foor 循环,但它没有任何想法?
a <- lapply(split(df,df$Equips),function(x){
for(i in 1:8){
ll <- split(x,x$rank)
if(length(ll)>i )
ii <- intersect(ll[[i]]$Comps,ll[[i+1]]$Comps )
else ii <- NA c(length(ii)> 0 && !is.na(ii),ii)
}
})
b <- unlist(a)
c <- table(b,b)
rowSums(c)
知道我能为它做什么(主要想法是一步获得 1-2,2-3,3-4 等的结果!