根据R中data.table中的某些条件选择列

时间:2015-07-09 18:22:23

标签: r data.table

我在 4004c9: c7 45 fc 2a 00 00 00 movl $0x2a,-0x4(%rbp) 4004d0: 8b 45 fc mov -0x4(%rbp),%eax 4004d3: 89 c7 mov %eax,%edi 4004d5: b8 00 00 00 00 mov $0x0,%eax 中有一个data.table,其中包含200个带整数值的列。

其中一列被命名为group,它有100个不同的可能值。

因此,当我使用:R进行子集时,例如,如果我这样做,subDT<-DT[group==N],则总和的值可能为0.

所以我要做的是显示sum(subDT$columnX),但只显示subDT的列,例如sum(subDT$columnN)!=0,保持列的名称完整无缺。

修改

使用mtcars数据的一个例子是:

subDT[group==0,.(columns where sum(column)>0)]

假设我们想要将mtcars子集化并获取carb为1的行,但仅当子集的总和小于10时才显示列:

DT<-as.data.table(mtcars)

在这种情况下,将显示的列仅为vs,am和carb,因为这些列的总和小于10

1 个答案:

答案 0 :(得分:1)

假设在过滤器之后取总和:

DT[group == N, !(sapply(DT[group == N],sum) == 0), with = FALSE]

使用setkey可以更快地完成:

setkey(DT,group)
DT[N, !(sapply(DT[N],sum) == 0), with = FALSE]