根据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]
我在 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]