我正在使用data.table在一列中获取一些基本统计信息,同时按另一列进行过滤.
这是命令
stats <- as.data.frame(mydata[, j = list(Sum = sum(as.numeric(get(selection))),
Average = mean(as.numeric(get(selection))),
Count = length(get(selection))),
by = list(get(filters))])
Run Code Online (Sandbox Code Playgroud)
哪里:
如果我将自己限制在一个过滤器(一列),一切正常,但我想过滤多个列.
有可能做到:
by = list(get(filters[1]), get(filters[2]), ...)
Run Code Online (Sandbox Code Playgroud)
但是,这需要我知道将使用多少个过滤器.这是我不想要的限制.
如何编写by =来获取任意数量的过滤器(列名称) - 我只是尝试了mget(过滤器),但这不起作用.
谢谢!
卡洛斯
Data.tables by参数接受列名称的字符向量(请参阅文档:) help("data.table").没有必要get.只是用by = c(filters).
例:
library(data.table)
DT <- data.table(mtcars)
filters <- c("am", "gear")
DT[, mean(mpg), by=c(filters)]
# am gear V1
#1: 1 4 26.27500
#2: 0 3 16.10667
#3: 0 4 21.05000
#4: 1 5 21.38000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |