You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在doBy包的summary_by公式中使用变量名而非列名

解决doBy::summary_by中使用变量指定列名的问题

summary_by的公式参数需要传入公式对象,直接用字符变量拼接的写法会被R当作列名查找,导致报错。可以通过以下两种方法用变量动态构建公式:

方法1:用paste+as.formula构建公式

先将变量名拼接成公式字符串,再转换为公式对象:

library(data.table)
library(doBy)

mtcars = data.table(mtcars)

variable1 = "gear"
variable2 = "am"
variable3 = "mpg"

# 构建公式字符串并转为公式对象
formula_str <- paste(variable3, "~", variable1, "+", variable2)
formula_obj <- as.formula(formula_str)

# 传入公式对象执行分组汇总
doBy::summary_by(data = mtcars, formula = formula_obj, FUN = "mean")

方法2:用reformulate函数(更简洁)

reformulate可以直接用字符向量构建公式,response参数指定左侧的响应变量,第一个参数是右侧的分组变量向量:

library(data.table)
library(doBy)

mtcars = data.table(mtcars)

variable1 = "gear"
variable2 = "am"
variable3 = "mpg"

# 直接构建公式对象
formula_obj <- reformulate(c(variable1, variable2), response = variable3)

# 执行分组汇总
doBy::summary_by(data = mtcars, formula = formula_obj, FUN = "mean")

两种方法都能得到你期望的输出结果:

gear  am   mpg."mean"
3     0    16.10667
4     0    21.05000
4     1    26.27500
5     1    21.38000

内容的提问来源于stack exchange,提问作者nimliug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:21:37