如何在R语言中将data.frame每4行(周数据)聚合为月度总分?
R语言:按每4周分组计算月度总得分之和
方法1:使用dplyr包(代码更直观)
假设你的数据框名为weekly_data,其中包含需要求和的total_score列,执行以下代码:
library(dplyr) monthly_summary <- weekly_data %>% # 为每行分配对应月份:每4周为1个月,从1开始编号 mutate(month = ceiling(row_number() / 4)) %>% # 按月份分组,计算总得分之和 group_by(month) %>% summarise(SumScore = sum(total_score, na.rm = TRUE)) %>% # na.rm=TRUE处理可能的缺失值 ungroup() # 输出结果 monthly_summary
方法2:使用Base R(无需额外安装包)
如果不想加载第三方包,用基础R代码实现:
# 生成月份分组标识 weekly_data$month <- ceiling(seq_len(nrow(weekly_data)) / 4) # 按月份分组求和 monthly_summary <- aggregate(total_score ~ month, data = weekly_data, FUN = sum, na.rm = TRUE) # 重命名求和列以匹配预期格式 colnames(monthly_summary)[2] <- "SumScore" # 输出结果 monthly_summary
说明
- 你的数据共120行,每4行一组会生成30个月份(1到30),完全匹配需求
- 代码中
na.rm = TRUE用于处理total_score中可能存在的缺失值,若确定无缺失可删除该参数 - 如果数据包含日期列,需要按自然月分组而非固定4周,可补充日期列信息后调整分组逻辑
内容的提问来源于stack exchange,提问作者Ahm MMM
相关产品推荐
相关产品推荐

