行子集,同时在Data.Table中保留标签列

时间:2018-11-01 15:18:50

标签: r data.table

我有ID / label第一列的数据表,如下所示;

         Name        P1  P2        P2
1:     DDX11L1 0.1300954  0 0.3019587
2:      WASH7P 2.0164780  0 0.6542439
3:   MIR6859-1 0.0000000  0 0.0000000

我经常这样子设定;

rowSums(dt[,!"Gene"]>1)>2

还有这个

dt[,grepl(glob2rx("*CPM"), names(cladGE)), with=F]

这些操作不可避免地会删除第一个ID列。我可以使用具有行名设置的data.frame来做到这一点,但是有data.table处理此问题的方法吗?

1 个答案:

答案 0 :(得分:0)

我们可以在.SDcols中指定列,并使用rowSums并创建一个新列

dt[, newCol := rowSums(.SD > 1) > 2, .SDcols = 2:4]

Reduce

dt[, newCol := Reduce(`+`, lapply(.SD, `>`, 1)) > 2, .SDcols = 2:4]

如果选择了具有某些模式属性的列,则可以在grepl中使用.SDcols

dt[, newCol := Reduce(`+`, lapply(.SD, `>`, 1)) > 2, 
          .SDcols = grepl(glob2rx("*CPM"), names(cladGE))]