【发布时间】:2021-12-23 08:45:35
【问题描述】:
我的问题似乎很琐碎,但似乎我没有找到合适的搜索词。
我的数据是这样的:
data <- data.frame(ID = c(1,1,2,3,3),
V1 = c("A","B","A","B","C"),
V2 = c("C","B",NA,"B","A"),
V3 = c("A","B","C","B",NA))
我想按 ID 合并或合并行,并且每个 ID 只保留一行,每列中的“最高”值。在我的示例中,我希望 C 优先于 B 而不是 A。
完成所需的操作后,我的数据将如下所示:
| ID | V1 | V2 | V3 |
| -- | -- | -- | -- |
| 1 | B | C | B |
| 2 | A | NA | C |
| 3 | C | B | B |
任何提示将不胜感激! Dplyr 是首选,但没有必要。谢谢!
编辑:解决方案(谢谢!)都利用了字母在 R 中“有序”这一事实。
让我们以这个示例数据为例:
data <- data.frame(ID = c(1,1,2,3,3),
V1 = c("yes","no","yes","no","unsure"),
V2 = c("unsure","no",NA,"no","yes"),
V3 = c("yes","no","unsure","no",NA))
期望的结果是“是”优先于“否”而不是“不确定”。
【问题讨论】:
-
听起来您可能会交替将其表述为“我想优先考虑 B 而不是 C 而不是 A。”
标签: r dataframe dplyr character aggregate