私は薬物の組み合わせの数を数えるのに問題があります。私のデータは2つのデータフレームで構成されています。 DF1は、IDが含まれ、そのようなものとして、薬物が見つかりました:全部で7140個の可能な組み合わせでR:同じID内で最も頻繁に組み合わせを見つける
combi1 | combi2
-----------------
drug1 | drug2
drug1 | drug3
drug1 | drug4
drug2 | drug3
drug2 | drug4
drug2 | drug5
:
ID | drug
-----------
1 | drug1
1 | drug2
1 | drug3
2 | drug3
2 | drug5
3 | drug1
3 | drug3
3 | drug4
3 | drug5
DF2は、次のような2つの異なる薬物の全ての可能な薬剤の組み合わせを示しています。私が欲しいのは、どれくらいのIDが組み合わせ数drug1-drug2
、drug1-drug3
などであるかを調べることです。
私は、二重for
ループしようとしている:一度に1行を確認することができるので、
counter=0
for(com in 1:nrow(df2)){
for(id in 1:unique(df1$ID)){
if(df2$combi1[com] %in% df1$drug[id] & df2$combi2[com] %in% df1$drug[id]) {
counter=counter+1
}
}
df2$count=counter
counter=0
}
をしかし、それは動作しません。私はまたFind Most Frequent Combination within a Vector by Groupの解決策を試しましたが、運が全くありません。
さらに、私は3剤
EDITの組み合わせで同じことを実行する必要があります。 私は出力がDF2でこのようなことが好き、私はdrug1とdrug2が組み合わせとして発生した回数を、見ることができますID内。例えば、唯一のIDは、私がdata.tableのために達し、2つのIDがこの1のためにdrug1とdrug3
combi1 | combi2 | count
-----------------------
drug1 | drug2 | 1
drug1 | drug3 | 2
drug1 | drug4 | 0
drug2 | drug3 | 1
drug2 | drug4 | 0
drug2 | drug5 | 0
[類似のポスト](http://stackoverflow.com/questions/19891278/r-table-of-interactions-case-with-pets-and-houses)を参照してください。 'cbind(df2、n = crossprod(table(df1))[as.matrix(df2)])' –