少し問題があります。次のパラメーターがあります。
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))
ここで、 1 つだけを探して比較したいと思います。最初にEquip
使用された が 2 番目と同じである場合(同じだけ):Components
rank
rank
Equip
2 つの方法で:
1 つ目: すべてのコンポーネントは同じですか?
(最小 1) コンポーネントは同じですか?
私のデータセットには 15 万行を超える行があるため、高度な自動ソリューションが必要です。
望ましい答えは、TRUE と FALSE を含むブール式だけのベクトルである可能性があります。
したがって、上記の例では、
answer <- c(TRUE,TRUE)
ランク 1 の装備 1 コンポーネント: モーター "AND" ランク 1 の装備 2 もコンポーネント: モーターです。(1つの望ましい方法の例)
ご協力ありがとうございました =)
コメント機能を使ったのですが、コードを見せたいので問題が見れません。
ご無沙汰しております..
元のデータには2つ以上のランクがあり、ランクxとランクx + 1を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 などの結果を 1 つのステップで取得することです!