R语言按条件合并分组并按年月统计指定列求和的实现咨询
R语言分组聚合实现代码
我们需要先将分组列中A2、A3的取值统一为同一分组,再按年份、月份分组对指定字段求和,两种实现方式如下:
- tidyverse 实现
library(dplyr) # 构造示例数据 df1 <- data.frame( V = rep(paste("A",1:3,sep=""), each=12), year = rep(c(2020,2021), each=6, len=36), month = rep(c(1:3), each=2, len=36), Fo = 1:36, JA = 36:1, KH = c(1:12,12:1,21:32) ) df_result <- df1 %>% # 合并A2、A3为同一分组 mutate(V = case_when( V %in% c("A2", "A3") ~ "A2&A3", TRUE ~ V )) %>% # 按分组、年份、月份分组 group_by(V, year, month) %>% # 对指定字段求和 summarise( Fo = sum(Fo), JA = sum(JA), KH = sum(KH), .groups = "drop" ) # 若仅需输出合并后的A2&A3结果,可增加筛选步骤: # df_result <- df_result %>% filter(V == "A2&A3")
- base R 实现
# 构造示例数据 df1 <- data.frame( V = rep(paste("A",1:3,sep=""), each=12), year = rep(c(2020,2021), each=6, len=36), month = rep(c(1:3), each=2, len=36), Fo = 1:36, JA = 36:1, KH = c(1:12,12:1,21:32) ) # 生成分组标签 df1$group <- ifelse(df1$V %in% c("A2", "A3"), "A2&A3", df1$V) # 聚合计算 df_result <- aggregate(cbind(Fo, JA, KH) ~ group + year + month, data = df1, FUN = sum)
内容的提问来源于stack exchange,提问作者Masoud。
相关产品推荐
相关产品推荐

