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

使用dplyr时如何自定义y_mean函数,无需在summarise指定y列即可分组统计均值

解决方案

完全可以实现。你自定义的y_mean函数只需要忽略传入的参数,直接从dplyr分组运算的当前上下文环境中提取y列计算均值即可,函数定义如下:

y_mean <- function(x) {
  # 忽略输入的x参数,直接从当前分组环境取y列计算均值
  mean(cur_data()$y)
}

完整可运行代码:

library(dplyr)

set.seed(1453)
# 自定义y_mean函数
y_mean <- function(x) {
  mean(cur_data()$y)
}

summarise_funs <- c('mean','median','sum','y_mean')

iris %>% 
  mutate(y=rnorm(nrow(.),mean=2,sd=3)) %>% 
  group_by(Species) %>% 
  summarise(stat = get(summarise_funs[4])(Sepal.Width)) 

运行后输出结果和预期完全一致:

# A tibble: 3 × 2
  Species     stat
  <fct>      <dbl>
1 setosa      1.81
2 versicolor  1.85
3 virginica   2.34

实现原理

dplyr 1.0.0及以上版本提供的cur_data()函数可以直接获取当前分组的所有数据列,不需要提前在summarise的参数位置指定y列,函数内部直接调用即可满足你的需求。

内容的提问来源于stack exchange,提问作者Samet Sökel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:07