【发布时间】:2012-12-31 05:59:59
【问题描述】:
根据我的最后一个问题,我有一个新的归属问题。编辑我的帖子并在那里询问并等待一周后,我想在这里再试一次。
这次有一个更好的例子:
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 是必须寻找的主题。
我想要这样的输出:
如果 Equip(subject) 被访问了 2 次(rank 1 和 2)查看所有 Equips 和 rank 1&2 ,如果有任何 Component 被认为是第一次和第二次。
如果Equip(subject) 被所有Equips 访问了3 次(rank 1,2 和3),如果有任何Component 列出3 次,例如Equip 1, @ 987654335@ 1, Component 电机, Equip 1, rank 2, Component 电机, Equip 1, rank 3, 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
【问题讨论】:
-
用清楚的话来说是好的。首先,我想查找 2 次访问的 Equips。所以我想要得到的输出是,如果有任何项目(组件)在第一级和第二级监听。如果有这样的项目输出应该是 TRUE 和组件的名称。 3 次访问 装备相同,但应该看看是否有任何组件被用于等级 1,2,3 等......我上面提到的代码,对于寻找没有任何区别2次访问装备,3次访问装备等等..也许现在明白我的意思了吗?