r - R使用dplyr将行添加到分组的df
问题描述
我有一个分组df
,我想在与item_code
df 中的变量 ( ) 匹配的组顶部添加额外的行。额外的行没有id
列。附加行不应在 的组内重复df
。
示例数据:
df <- as.tibble(data.frame(id=rep(1:3,each=2),
item_code=c("A","A","B","B","B","Z"),
score=rep(1,6)))
additional_rows <- as.tibble(data.frame(item_code=c("A","Z"),
score=c(6,6)))
我试过的
我找到了这篇文章并尝试应用它: Add row in each group using dplyr and add_row()
df %>% group_by(id) %>% do(add_row(additional_rows %>%
filter(item_code %in% .$item_code)))
我得到什么:
# A tibble: 9 x 3
# Groups: id [3]
id item_code score
<int> <fct> <dbl>
1 1 A 6
2 1 Z 6
3 1 NA NA
4 2 A 6
5 2 Z 6
6 2 NA NA
7 3 A 6
8 3 Z 6
9 3 NA NA
我在找什么:
# A tibble: 6 x 3
id item_code score
<int> <fct> <dbl>
1 1 A 6
2 1 A 1
3 1 A 1
4 2 B 1
5 2 B 1
6 3 B 1
7 3 Z 6
8 3 Z 1
解决方案
这应该可以解决问题:
library(plyr)
df %>%
join(subset(df, item_code %in% additional_rows$item_code, select = c(id, item_code)) %>%
join(additional_rows) %>%
subset(!duplicated(.)), type = "full") %>%
arrange(id, item_code, -score)
不确定它是否是最好的方法,但它有效
编辑:以相同的顺序获得分数添加了其他排列条款
编辑2:好的,现在应该没有根据您的评论从其他行中添加重复的行
推荐阅读
- python - 反复询问现有文件
- c# - MVC 表单验证 | 自定义“验证属性”未收到正确的“值”
- mongodb - 仅当文档中的属性与另一个属性具有相同的值时,才确保它们是唯一的
- django - 在 SQLite3 中删除对象会输出与 Postgres 不同的错误
- ruby - 如何使用 Rack::App 提供静态资产?
- pyqt5 - pyqt5:停止标签中的长文本使窗口变大
- spring - 在 MVC 模式中,Controller 和 Service 之间使用 HttpSession 哪个更好?
- opencv - KivyMd 和 OpenCV setMouseCallback 参数问题
- android - 是否可以将 FlutterSimpleStickerView 与存储到文件变量的图像一起使用?
- javascript - TypeError:无法读取属性“标题”和未定义 React Hooks 道具的映射问题