提问人:aievan 提问时间:11/15/2023 更新时间:11/15/2023 访问量:35
R - 如何为数据帧的每个分组添加 N 行数?
R - how to add N number of rows to each grouping of a dataframe?
问:
我有一个看起来像这样的数据帧:
事件 ID | 商 | 地区 | 损失 |
---|---|---|---|
123 | 一个 | 澳大利亚 | 620 |
383 | 一个 | 澳大利亚 | 1232 |
123 | B | 澳大利亚 | 620 |
123 | C | 澳大利亚 | 1232 |
499 | 一个 | 日本 | 620 |
499 | B | 日本 | 1232 |
522 | B | 日本 | 620 |
771 | 一个 | 墨西哥 | 1232 |
919 | 一个 | 墨西哥 | 620 |
771 | B | 墨西哥 | 1232 |
800 | B | 墨西哥 | 620 |
993 | C | 墨西哥 | 1232 |
1772 | 一个 | 瑞典 | 620 |
2004 | C | 瑞典 | 1232 |
2193 | 一个 | 美国 | 620 |
3384 | 一个 | 美国 | 1232 |
2193 | 一个 | 美国 | 620 |
4026 | B | 美国 | 1232 |
6002 | C | 美国 | 620 |
6283 | C | 美国 | 1232 |
我想做的是插入行,以便在计算 EventID 的单个实例时,按业务和区域对每个分组都有 10 个额外的事件。
例如,当业务 A 分组时,它看起来像这样:
商 | 地区 | Event_Count |
---|---|---|
一个 | 澳大利亚 | 2 |
一个 | 日本 | 1 |
一个 | 墨西哥 | 2 |
一个 | 瑞典 | 1 |
一个 | 美国 | 3 |
我希望原始数据帧在每个业务区域分组中插入 10 个额外的行,其中包含空白的 EventID 和 Loss 字段,这将使分组的 df 如下所示:
商 | 地区 | Event_Count |
---|---|---|
一个 | 澳大利亚 | 12 |
一个 | 日本 | 11 |
一个 | 墨西哥 | 12 |
一个 | 瑞典 | 11 |
一个 | 美国 | 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()
但是我还没有找到任何描述如何根据每个分组添加特定行数的内容。
答:
0赞
jblood94
11/15/2023
#1
您可以重复选择不重复的行。例如,
rbind(
df,
df[rep(which(!duplicated(select(df, Business, Region))), each = 10),] %>%
mutate(EventID = NA, Loss = NA)
)
评论