我有一个看起来像这样的数据框:
事件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()
但我还没有找到任何描述如何根据每个分组添加特定行数的内容。
您可以重复选择不重复的行。例如,
rbind(
df,
df[rep(which(!duplicated(select(df, Business, Region))), each = 10),] %>%
mutate(EventID = NA, Loss = NA)
)