【发布时间】:2020-05-15 01:10:58
【问题描述】:
我已经阅读了很多关于将列名传递给 data.table 函数的帖子,但我没有看到一篇关于将多个变量传递给“by”的帖子。我通常使用这样的代码来按组计算汇总统计数据。
# Data
library(data.table)
dt=mtcars
setDT(dt)
# Summary Stats Example
dt[cyl==4,.(Count=.N,
Mean=mean(hp),
Median=median(hp)),
by=.(am,vs)]
# am vs Count Mean Median
# 1: 1 1 7 80.571 66
# 2: 0 1 3 84.667 95
# 3: 1 0 1 91.000 91
我无法使用以下功能:
# Function
myFun <- function(df,i,j,by){
df[i==4,.(Count=.N,
Mean=mean(j),
Median=median(j)),
by=.(am,by)]
}
myFun(dt,i='cyl',j='hp',by='vs')
请注意,我将“4”和“am”硬编码到此示例的函数中。 get() 通过分组变量仅使用 1 时有效,但在使用多个分组变量时失败。感谢您在编写 data.table 函数时如何正确使用 get/quote/eval/substitute/parse/as.name/etc 的指导。
【问题讨论】:
标签: r function data.table