如何在R中按年份合并A、D区域计数求和,保留B、C原始数据
解决思路
核心逻辑是拆分数据分别处理,再合并结果:先单独完成A、D区域的求和合并,保留B、C区域的原始数据,最后将两部分整合并调整顺序匹配示例输出。
方法一:使用R语言(dplyr包)
- 拆分数据:将原始数据分为「A/D区域组」和「B/C区域组」
- 处理A/D组:按年份分组,对
count求和,统一将region设为"A" - 合并数据:将处理后的A/D组与B/C组合并,按年份降序、区域升序排序
library(dplyr) # 假设原始数据框名为df # 处理A、D区域 processed_ad <- df %>% filter(region %in% c("A", "D")) %>% group_by(year) %>% summarise(count = sum(count), region = "A") %>% ungroup() # 提取B、C区域原始数据 bc_data <- df %>% filter(region %in% c("B", "C")) # 合并并排序得到最终结果 final_df <- bind_rows(processed_ad, bc_data) %>% arrange(desc(year), region)
方法二:使用Python语言(pandas库)
- 拆分数据:筛选出A/D区域和B/C区域的子数据框
- 处理A/D组:按年份分组聚合,求和
count并固定region为"A" - 合并数据:拼接处理后的A/D组与B/C组,按年份降序、区域升序排序
import pandas as pd # 假设原始数据框名为df # 处理A、D区域 ad_subset = df[df['region'].isin(['A', 'D'])] processed_ad = ad_subset.groupby('year').agg( count=('count', 'sum'), region=lambda x: 'A' ).reset_index() # 提取B、C区域原始数据 bc_subset = df[df['region'].isin(['B', 'C'])] # 合并并排序得到最终结果 final_df = pd.concat([processed_ad, bc_subset]) final_df = final_df.sort_values(by=['year', 'region'], ascending=[False, True]).reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Sas
相关产品推荐
相关产品推荐

