私の最後の質問によると、私は新しい所属の質問があります。投稿を編集してそこで質問し、1 週間ほど待ってから、ここでもう一度試してみたいと思います。
今回はより良い例で:
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 回 (1 回目と 2 回目) 訪問された場合、1 回目と2 回目とみなされたものがある場合は、 1&2 でrank
すべてEquip
の s を調べます。rank
Component
Equip(subject)
すべての sが 3 回 ( rank
1 、2 および 3 )訪問した場合、1 、1 、Motor 、1 、2 、Motor 、1 、3 、Motorのように 3 回アップされたリスト 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