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

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")

结果参考

运行宽表方案得到的输出如下:

yearIndia_annual_avgNepal_annual_avg
201040.2515
201229.544.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:05