R - 如何向数据帧的每个分组添加 N 行?

问题描述 投票:0回答:1

我有一个看起来像这样的数据框:

事件ID 商业 地区 损失
123 A 澳大利亚 620
383 A 澳大利亚 1232
123 B 澳大利亚 620
123 C 澳大利亚 1232
499 A 日语 620
499 B 日语 1232
522 B 日语 620
771 A 墨西哥 1232
919 A 墨西哥 620
771 B 墨西哥 1232
800 B 墨西哥 620
993 C 墨西哥 1232
1772 A 瑞典 620
2004年 C 瑞典 1232
2193 A 美国 620
3384 A 美国 1232
2193 A 美国 620
4026 B 美国 1232
6002 C 美国 620
6283 C 美国 1232

我想要做的是插入行,以便在计算 EventID 的各个实例时,按业务和区域进行的每个分组都有 10 个附加事件。

例如,企业 A 分组后的样子:

商业 地区 事件计数
A 澳大利亚 2
A 日语 1
A 墨西哥 2
A 瑞典 1
A 美国 3

我希望原始数据帧在每个业务区域分组中插入 10 行额外的行,其中包含空白的 EventID 和 Loss 字段,这将使分组的 df 看起来像这样:

商业 地区 事件计数
A 澳大利亚 12
A 日语 11
A 墨西哥 12
A 瑞典 11
A 美国 13

尝试了其他 stackoverflow q 中的一些解决方案,如下所示:

LSM_Re_Events_Less_100 <- LSM_Re %>% right_join(LSM_Re_Events, by=c("LineOfBusiness", "Peril", "Region")) %>%
  select(YearID, EventID, LineOfBusiness, Peril, Region, Loss) %>%
  xtabs(formula = Loss ~ YearID + EventID + LineOfBusiness + Peril + Region) %>% as.data.frame()

但我还没有找到任何描述如何根据每个分组添加特定行数的内容。

r dataframe grouping
1个回答
0
投票

您可以重复选择不重复的行。例如,

rbind(
  df,
  df[rep(which(!duplicated(select(df, Business, Region))), each = 10),] %>%
    mutate(EventID = NA, Loss = NA)
)
© www.soinside.com 2019 - 2024. All rights reserved.