这就是我的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= ";"),"")]
答案 0 :(得分:2)
我们可以按行,unlist
Data.table的子集(.SD
),将数据集的名称,paste
元素组合在一起并分配({{1 }})到&#39; newCol&#39;
:=
或另一个选项是nm1 <- names(dt)[-4]
dt[, newCol := toString(nm1[unlist(.SD)]) ,by = 1:nrow(dt),.SDcols = nm1]
到“长”&#39;格式,然后进行连接
melt