感谢您的耐心等待。
我正在处理详细介绍患者和药物的大型数据集。
药物很难编码,因为它们(通常)没有意义,除非与剂量匹配。
我有一个带载体的数据框(Drug1,Drug2 ..... Drug 16),其中个体患者用行表示。 载体实际上是因子,有100个可能的水平(患者可以使用的所有药物)。
我想要做的就是产生一个逻辑向量(TTTTFFFFTTT ......),然后我可以将其转换成一个数据帧,告诉我患者是否患有特定药物。
然后,我可以使用特别重要的药物作为模型中的分类协变量存在或不存在。我尝试过grep,沿着行搜索,我可以生成一个标识符向量,但我似乎无法生成逻辑向量。
我意识到我做错了。
names(drugindex)
[1] "book.MRN" "DRUG1" "DRUG2" "DRUG3" "DRUG4" "DRUG5"
[7] "DRUG6" "DRUG7" "DRUG8" "DRUG9" "DRUG10" "DRUG11"
[13] "DRUG12" "DRUG13" "DRUG14" "DRUG15" "DRUG16"
> truvec<-drugindex$book.MRN[as.vector(unlist(apply(drugindex[,2:17], 2, grep, pattern="Lamotrigine")))]
> truvec
truvec
[1] 0024633 0008291 0008469 0030599 0027667
37 Levels: 0008291 0008469 0010188 0014217 0014439 0015822 ... 0034262
> head(drugindex)
book.MRN DRUG1 DRUG2 DRUG3 DRUG4 DRUG5
4 0008291 Venlafaxine Procyclidine Flunitrazepam Amisulpiride Clozapine
31 0008469 Venlafaxine Mirtazapine Lithium Olanzapine Metoprolol
3 0010188 Flurazepam Valproate Olanzapine Mirtazapine Esomeprazole
13 0014217 Aspirin Ramipril Zuclopenthixol Lorazepam Haloperidol
15 0014439 Zopiclone Diazepam Haloperidol Paracetamol <NA>
5 0015822 Olanzapine Venlafaxine Lithium Haloperidol Alprazolam
DRUG6 DRUG7 DRUG8 DRUG9 DRUG10 DRUG11 DRUG12
4 Lamotrigine Alprazolam Lithium Alprazolam <NA> <NA> <NA>
31 Lamotrigine Ramipril Alprazolam Zolpidem Trifluoperazine <NA> <NA>
3 Paracetamol Alprazolam Citalopram <NA> <NA> <NA> <NA>
13 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
15 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
DRUG13 DRUG14 DRUG15 DRUG16
4 <NA> <NA> <NA> <NA>
31 <NA> <NA> <NA> <NA>
3 <NA> <NA> <NA> <NA>
13 <NA> <NA> <NA> <NA>
15 <NA> <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA>
我想要的是每种药物的逻辑矢量,说明患者是否在其上
谢谢大家的时间。
Ross Dunne MRCPsych
“Te occidere possunt sed te edere ne possunt,nefas est”。
答案 0 :(得分:9)
答案 1 :(得分:4)
首先,评论数据结构。您有一些称为“宽”格式的数据,每个患者有一行,药物有多列。通常的情况是,“长”格式,每个患者的行重新排列和药物的单个列更适合数据操作。要将数据从宽到长重新整形,反之亦然,请查看重塑包。在这种情况下,你会有类似的东西:
library(reshape)
dnow <- melt(drugindex, id.var='book.MRN')
subset(dnow, value=='Lamotrigine')
如果我可以这么说的话,那么清晰,明显的代码......
编辑:如果您需要旧结构,可以使用cast
:
cast(subset(dnow, value=='Lamotrigine'), book.MRN ~ value)
@jonw在评论中建议