R语言使用dplyr计算两国各年度数据均值的代码问题求助
R语言计算分国家年度均值解决方案
原代码问题点
- 未给
mean()函数传入要计算的数值列,函数无法执行计算逻辑 summarise语法多写了一个冗余右括号,会直接触发语法报错- 仅设置了一个通用的Average输出列,无法区分印度、尼泊尔两个国家的计算结果
可复现数据集构建代码
dt <- structure(list(year = c(2010, 2010, 2010, 2010, 2012, 2012), India = c(56, 53, 52, 0, 29, 30), Nepal = c(35, 6, 7, 12, 34, 55)), row.names = c(NA, 6L), class = "data.frame")
正确实现代码
方案1:宽表输出(每年度一行,分列展示两国均值)
适合需要按年度横向对比两国数值的场景:
library(dplyr) Mean <- dt %>% group_by(year) %>% summarise( India_annual_avg = mean(India, na.rm = TRUE), Nepal_annual_avg = mean(Nepal, na.rm = TRUE) )
方案2:长表输出(年度+国家为唯一分组行)
适合后续需要做分组绘图、多国家批量计算的场景:
library(dplyr) library(tidyr) Mean <- dt %>% pivot_longer(cols = c(India, Nepal), names_to = "country", values_to = "indicator_value") %>% group_by(year, country) %>% summarise(annual_avg = mean(indicator_value, na.rm = TRUE), .groups = "drop")
结果参考
运行宽表方案得到的输出如下:
| year | India_annual_avg | Nepal_annual_avg |
|---|---|---|
| 2010 | 40.25 | 15 |
| 2012 | 29.5 | 44.5 |
内容的提问来源于stack exchange,提问作者Anaya Fakar
相关产品推荐
相关产品推荐

