我在R中有一个纵向数据集,包括在多个时间点观察到的几个国家.让我们简化一下,考虑一下下面的例子

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))

目标是 for each 国家和年份创建一个新的行,在行业栏中始终标记为"C+D".H_emp中的相应单元格应等于该国家/地区行业"C"和"D"在该特定年份的h_emp的值之和.我怎样才能做到这一点呢?

推荐答案

使用dplyr创建一个包含C+D总和的汇总df,然后绑定回您的原始df.注意:您的示例数据对于每年/国家/地区的某些行业都有多个条目;我假设这是一个错误,所以我创建了新的示例数据.

set.seed(123)
library(dplyr)

df <- expand.grid(
  Country = c("DEU", "FRA", "ITA"),
  Year = 1:4,
  industry = c("A", "B", "C", "D")
)
df$h_emp <- rnorm(48, 15, 3.5)

df <- df %>%
  filter(industry %in% c("C", "D")) %>%
  summarize(
    industry = "C+D",
    h_emp = sum(h_emp),
    .by = c(Country, Year)
  ) %>%
  bind_rows(df, .) %>%
  arrange(Country, Year)

结果:

#> head(df, 15)
   Country Year industry     h_emp
1      DEU    1        A 13.038335
2      DEU    1        B 16.402700
3      DEU    1        C 12.812363
4      DEU    1        D 16.938712
5      DEU    1      C+D 29.751074
6      DEU    2        A 15.246779
7      DEU    2        B 21.254196
8      DEU    2        C 15.536806
9      DEU    2        D 13.668351
10     DEU    2      C+D 29.205157
11     DEU    3        A 16.613207
12     DEU    3        B 17.454746
13     DEU    3        C 16.492625
14     DEU    3        D 10.571113
15     DEU    3      C+D 27.063738

R相关问答推荐

根据收件箱中的特定值提取列名

基于不同组的列的相关性

如何在RMarkdown LaTex PDF输出中包含英语和阿拉伯语?

根据多个条件增加y轴高度以适应geom_text标签

将嵌套列表子集化为嵌套列表

如何直接从R中的风险分数计算c指数?

从BRM预测价值

在ggplot中为不同几何体使用不同的 colored颜色 比例

即使硬币没有被抛出,也要保持对其的跟踪

一小时满足条件的日期的 Select

ComplexHEAT:使用COLUMN_SPLIT时忽略COLUMN_ORDER

过滤名称以特定字符串开头的文件

根据纬度和距离连接两个数据集

如何提取R中其他字符串和数字之间的字符串?

如何在Quarto中使用美人鱼图表中的标记来加粗文本

注释不会绘制在所有ggplot2面上

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

如何使用grepl()在数据帧列表中 Select 特定字符串?

从单个html段落中提取键-值对

从字符串列中的向量中查找第一个匹配的单词