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

在R语言纵向数据集中新增C+D行业合并行的实现方法

解决方案

首先确认你的示例数据集:

set.seed(123)
df=data.frame(Country=c(rep("DEU",16),rep("FRA",16),rep("ITA",16)),Year=rep(c(rep(1,4),rep(2,4),rep(3,4),rep(4,4)),3),industry=rep(c("A","B","C","D"),12),h_emp=rnorm(48,15,3.5))

下面提供两种常用实现方式:

方法一:使用dplyr(tidyverse生态)

适合习惯管道式操作的用户:

# 加载dplyr包(未安装则先运行install.packages("dplyr"))
library(dplyr)

# 生成每个国家-年份下C+D行业的汇总行
cd_summary <- df %>%
  filter(industry %in% c("C", "D")) %>%
  group_by(Country, Year) %>%
  summarise(industry = "C+D",
            h_emp = sum(h_emp),
            .groups = "drop")

# 合并原数据与汇总行,按国家、年份、行业排序整理
final_df <- df %>%
  bind_rows(cd_summary) %>%
  arrange(Country, Year, industry)

方法二:使用Base R

无需额外安装包,适合偏好原生R语法的用户:

# 筛选C和D行业观测,按国家+年份分组求和
cd_summary <- aggregate(h_emp ~ Country + Year, 
                        data = df[df$industry %in% c("C", "D"), ],
                        FUN = sum)

# 添加行业标记列,调整列顺序与原数据一致
cd_summary$industry <- "C+D"
cd_summary <- cd_summary[, c("Country", "Year", "industry", "h_emp")]

# 合并数据并排序
final_df <- rbind(df, cd_summary)
final_df <- final_df[order(final_df$Country, final_df$Year, final_df$industry), ]

运行任意一种方法后,final_df即为包含新增C+D汇总行的完整数据集,每个国家的每个年份都会新增一行标记为"C+D"的记录,对应h_emp为该年份C和D行业的数值之和。

内容的提问来源于stack exchange,提问作者Maximilian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:45:03