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

如何在R中按年份合并A、D区域计数求和,保留B、C原始数据

解决思路

核心逻辑是拆分数据分别处理,再合并结果:先单独完成A、D区域的求和合并,保留B、C区域的原始数据,最后将两部分整合并调整顺序匹配示例输出。

方法一:使用R语言(dplyr包)

  1. 拆分数据:将原始数据分为「A/D区域组」和「B/C区域组」
  2. 处理A/D组:按年份分组,对count求和,统一将region设为"A"
  3. 合并数据:将处理后的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库)

  1. 拆分数据:筛选出A/D区域和B/C区域的子数据框
  2. 处理A/D组:按年份分组聚合,求和count并固定region为"A"
  3. 合并数据:拼接处理后的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:01:47