【发布时间】:2020-07-16 03:05:28
【问题描述】:
我有一个包含 1.6x10^8 记录的 data.table,我想根据值为 1 的指示符列名称创建一个新的字符列。
例如,
library(data.table)
DT <- data.table::data.table(ID=c("a","a","a","b","b"),
drugA=c(1,1,1,0,0),
drugB=c(0,1,1,1,0),
drugC=c(0,0,1,0,1))
ID drugA drugB drugC
1: a 1 0 0
2: a 1 1 0
3: a 1 1 1
4: b 0 1 0
5: b 0 0 1
### NOTE: I know the paste0(...,collapse) argument might be helpful in concatenating the drug names as an intermediate step
ID drugA drugB drugC exposure
1: a 1 0 0 drugA
2: a 1 1 0 drugA+drugB
3: a 1 1 1 drugA+drugB+drugC
4: b 0 1 0 drugB
5: b 0 0 1 drugC
我希望它尽可能健壮,并且完全依赖 data.table 语法和/或其他有用的包/功能(例如 dcast);我不想创建一个广泛的用户定义函数,因为考虑到我的 data.table 大小,运行它需要很长时间。
我查看了其他帖子,但找不到与我的情况和所需输出相似的内容。
任何帮助将不胜感激。
【问题讨论】:
标签: r data.table calculated-columns dcast