短い質問..次のサンプルデータを使用:
Equips <- c(1000829,1000829,1000829,1000829,10002244,10002244,
10002244,10002244,10002244,10002244)
Notifs <- c(306989814,306991263,306991263,306991263,306749278,306749278,
306749278,306749278,306854440,306868916)
Comps <- c("Ignition and Flame Detection","Ignition and Flame Detection","Control Box",
"Ignition and Flame Detection","Service Boiler!!!","CH Components Passive",
"Ignition and Flame Detection","not grouped in WCC",
"Electrical Components","Flue Duct")
rank <- c(1,2,2,2,1,1,1,1,2,3)
df <- data.frame(Equips,Notifs,Comps,rank)
装備はマシンの数のようなものなので、2台のマシンがあり、通知は訪問数です=>ランクはマシンの訪問数を示します。コンプは修復されるコンポーネントです。このマシンを訪れるたびに修理されたコンポーネントがあるかどうかを確認したいと思います。
たとえば、マシン1では、点火および火炎検出がランク1およびランク2で修復されたため、出力をTRUEにしたいので、マシン2に3回アクセスしましたが、ランク1、2、および3で修復されたコンポーネントはありません。出力はFALSEである必要があります。(元のデータセットでは、Equipsが最大10回訪問されています!!)
私は同様の質問をし、このコードを持っていました。
しかし、それは機能していません。多分あなたはそれで後れを取ることができます:
result <- by(df, df$Equips, function(d) {
nb.comps <- length(unique(df$Comps))
tab <- table(df$rank, df$Comps) > 0
tab <- margin.table(tab, 2)
return(sum(tab>=nb.comps)>0)
})
data.frame(nb.equips=dim(result), nb.matched=sum(result))
パッケージをインストールする機会がなく、データセットのサイズが大きいため、最後のコードのような全体的なビューが本当に必要なので、このようなものが本当に必要です。ご不明な点がございましたらお問い合わせください。