如何在R中用aggregate函数计算不同年份同月的平均值?
解决方案
先读取你的CSV数据:
data <- read.csv("你的文件路径.csv")
接下来核心是从Date列(yyyymm格式)里提取出月份,之后就能用aggregate正常分组计算了,这里给你几种实用的方法:
方法一:Base R 原生处理
直接通过字符串截取或者数值运算提取月份:
# 如果Date是字符型,取最后两位作为月份 data$Month <- substr(data$Date, 5, 6) # 如果Date是数值型,用取余运算获取月份 data$Month <- data$Date %% 100
然后用aggregate按月份分组求平均:
monthly_avg <- aggregate(Mean ~ Month, data = data, FUN = mean)
方法二:用lubridate包处理日期
要是习惯用专业日期包,lubridate能让日期处理更直观:
library(lubridate) # 把yyyymm格式转为年月对象,再提取月份 data$Month <- month(ym(data$Date)) # 同样用aggregate计算均值 monthly_avg <- aggregate(Mean ~ Month, data = data, FUN = mean)
方法三:tidyverse风格写法
如果偏好dplyr的链式语法,也可以这么写:
library(dplyr) monthly_avg <- data %>% mutate(Month = substr(as.character(Date), 5, 6)) %>% group_by(Month) %>% summarise(平均均值 = mean(Mean))
运行完上面任意一种方法,monthly_avg里就会包含1-12月各自的平均数值了。
内容的提问来源于stack exchange,提问作者Michael_Brun
相关产品推荐
相关产品推荐

