根据条件在data.table中连接列名

时间:2017-02-13 17:11:31

标签: r data.table dplyr lapply

这就是我的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= ";"),"")]

1 个答案:

答案 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