这就是我的 data.table 的样子。最右边的一列PASTE
是我想要的专栏。
library(data.table)
dt <- fread('
A B C PASTE
TRUE FALSE TRUE A,C
TRUE TRUE TRUE A;B;C
FALSE TRUE FALSE B
FALSE FALSE FALSE
')
我正在尝试创建专栏PASTE
通过连接所有列名只要该行该列的值为 TRUE。
这是我的尝试:
dt[,PASTE:= if(dt[,c(1:3),with=FALSE] == TRUE, paste(names(dt), sep= ";"),"")]
我们可以按行分组,unlist
Data.table 的子集 (.SD
),数据集名称的子集,paste
将元素放在一起并分配 (:=
) 到 'newCol'
nm1 <- names(dt)[-4]
dt[, newCol := toString(nm1[unlist(.SD)]) ,by = 1:nrow(dt),.SDcols = nm1]
或者另一个选择是melt
为“长”格式,然后进行连接
dt[melt(dt[, n := seq_len(.N)], id.var = c("n", "PASTE"))[,
toString(variable[value]), n], on = "n"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)