subjects
被験者が服用した薬に対応する一連の変数を含む被験者データセットがあります。その広い変数から、データセット内のすべての薬の一意のセットを作成しました (それがどの特定の変数から来たかに関係なく)。被験者が med を 1 回以上リストすると、その数が 1 増えるように、各 med の被験者数を見つけたいと思います。
以下はゆっくりとした方法ですが、9 つの med 変数と 50,000 を超える被験者がいます。誰かがより効率的な方法を見つけるのを手伝ってくれますか? ありがとう。
subjects <- data.table(
med1= as.factor(c("NASONEX","ALBUTEROL","","BENADRYL","THEODUR")),
med2= as.factor(c("","ALBUTEROL","ASBRON","NASONEX","MONTEKULAST")),
medrecent= as.factor(c("MONTEKLUAST","","","THEODUR",""))
)
medvarnames <- c("med1","med2","medrecent")
allmeds <- data.table(
med=subjects[,unique(unlist(sapply(.SD,levels))), .SDcols=medvarnames],
count=0
)
for(i in 1: dim(subjects)[1]){
allmeds[, count := count +
sapply(allmeds$med,function(.m){
as.integer(
any(.m == subjects[i,.SD,.SDcols=medvarnames],na.rm=TRUE)
)
})
]
}
allmeds
med count
1: 4
2: ALBUTEROL 1
3: BENADRYL 1
4: NASONEX 2
5: THEODUR 2
6: ASBRON 1
7: MONTEKULAST 1
8: MONTEKLUAST 1