根据我的最后一个问题,我有一个新的归属问题。编辑我的帖子并在那里询问并等待一周后,我想再次在这里尝试。
这次有一个更好的例子:
Equip<- c(1,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,6,6,6)
Notif <-c(1,1,3,4,2,2,2,5,6,7,9,9,15,10,11,12,13,14,16,17,18,19)
rank <- c(1,1,2,3,1,1,1,1,2,3,1,1,2,1,2,3,1,2,3,4,5,6)
Component <- c("Ventil","Motor","Ventil","Ventil","Vergaser","Vergaser","Bremse",
"Lichtmaschine","Bremse","Lichtmaschine","Bremse","Motor","Lichtmaschine",
"Bremse","Bremse","Motor","Vergaser","Motor","Vergaser","Motor",
"Vergaser","Motor")
df <- data.frame(Equip,Notif,rank,Component)
Equip
是我的主题和rank
实际访问次数。Component
是必须寻找的主题。
我想要这样的输出:
如果 anEquip(subject)
被访问了 2 次(rank
1 和 2),请使用 1&2 查找所有Equip
s rank
,如果有任何Component
被认为是第一次和第二次。
如果 an被所有sEquip(subject)
访问 3 次( 1 ,2 和 3 ) ,如果有任何列表 3 次,例如 1, 1, Motor, 1, 2, Motor, 1, 3, Motorrank
Equip
Component
Equip
rank
Component
Equip
rank
Component
Equip
rank
Component
输出应具有 的名称Component
,例如 True "Motor"
我有一个代码,但是有了这个,我可以比较第 1 次和第 2 次访问,第 2 次和第 3 次访问等等(我不能再次与等级分开,比如装备 2 等级,装备 3 等级等等在)
代码是这样的:
a <- lapply(split(df,df$Equip),function(x){
ll <- split(x,x$rank)
if(length(ll)>1 )
ii <- intersect(ll[[1]]$Component,ll[[2]]$Component ) ## test intersection
else
ii <- NA
c(length(ii)> 0 && !is.na(ii),ii)
})
b <- unlist(a)
c <- table(b,b)
rowSums(c)
希望你能帮助我。请询问是否有任何问题。
根据您关于输出的问题以及您的解决方案,
Equip Component V1 idx
1: 1 Ventil TRUE 3
2: 2 NA False 1
3: 3 NA False 3
4: 4 NA FALSE 2
5: 5 NA FALSE 3
6: 6 NA FALSE 6
类似的东西,但如果它更容易,则不一定需要 Equip 和 idx
装备 2 个等级:
TRUE FALSE
0 1
装备 3 个等级:
TRUE FALSE
1 2
装备 6 个等级:
TRUE FALSE
0 1