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

Selecting columns based on certain conditions in a data.table in R

我在 R 中有一个 data.table,其中有 200 列整数值。

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

因此,当我使用 subDT<-DT[group==N] 进行子集化时,例如,如果我这样做,sum(subDT$columnX),总和的值可能为 0。

所以我想做的是显示 subDT,但只显示 sum(subDT$columnN)!=0 的列,例如 subDT[group==0,.(columns where sum(column)>0)],当然要保持列的名称完整。


编辑

使用 mtcars 数据的示例是:

DT<-as.data.table(mtcars)

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

DT[carb == 1, (sapply(DT[carb == 1],sum) < 10), with = FALSE]  

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

假设在过滤后取和:

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

可以使用 setkey 提高速度:

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