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

在R语言中按年份与公司分组计算均值的方法求助

解决R语言按年份和公司分组计算各列均值的问题

你的代码存在两个核心问题:

  1. group_by("Year") 中的引号是错误用法,分组时直接写列名即可,无需加引号;且你的需求是按年份和公司分组,需同时指定两个分组列(假设公司列名为Company,请根据实际列名调整)。
  2. colMeans 是base R函数,无法直接配合dplyr的管道分组对象使用,需用dplyr包的汇总函数实现分组计算逻辑。

以下是两种可行的解决方案,均基于dplyr包:

方法一:使用across(dplyr 1.0.0+ 推荐用法)

library(dplyr)

# 假设数据框DF包含Year、Company及需计算均值的数值列
DF %>%
  group_by(Year, Company) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE), .groups = "drop")
  • across(where(is.numeric), mean, na.rm = TRUE):对所有数值型列计算均值,自动忽略NA值
  • .groups = "drop":计算完成后取消分组,返回普通数据框;若需保留分组,可移除该参数或设置为"keep"

方法二:使用summarise_all(兼容旧版dplyr)

如果你的dplyr版本较低,可使用该写法:

DF %>%
  group_by(Year, Company) %>%
  summarise_all(mean, na.rm = TRUE)

若数据中存在非数值列(如Year、Company本身),可通过summarise_at指定具体计算列:

# 假设需计算均值的列是col1、col2、col3
DF %>%
  group_by(Year, Company) %>%
  summarise_at(vars(col1, col2, col3), mean, na.rm = TRUE)

补充说明

  • 确保Year和Company列的类型正确(比如Year为整数/字符,Company为字符/因子)
  • 若列名含特殊字符或与函数名冲突,需用反引号包裹,例如group_by(Fiscal Year)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:02:05