r - 根据 ID 将一个数据帧的行合并到另一个数据帧的多列
问题描述
我有一个具有 ID 号和相应数据的数据框,其中一些 ID 号在多行中重复,我想将此数据框与另一个每行有一个 ID 号的数据框合并。因此结果将是向每个行/ID 添加多个列以覆盖重复项。
我一直在使用 merge() 和 aggregate() 函数试图让它工作,但还没有接近我想要的。我还花了很多时间搜索堆栈溢出以找到解决方案,但一无所获。
这是第一个数据框的样子:
df1 <- data.frame(ID = c(90051, 90051, 90051, 90229, 90229, 91120, 91120, 89649),
SPP = c("ABLA", "PICO", "POTR5", "ABLA", "PICO", "ABLA", "POTR5", "ABLA"),
COUNT = c(5, 4, 1, 7, 1, 3, 5, 11))
这就是我要修改的数据框的样子
df2 <- data.frame(ID = c(85470, 90051, 90229, 91120, 89649, 84364),
COUNTY = c(49, 57, 107, 107, 117, 37), STATUS = c(1, 1, 1, 2, 1, 3))
这就是我希望我的结果数据框看起来像
df3 <- data.frame(ID = c(85470, 90051, 90229, 91120, 89649, 84364),
COUNTY = c(49, 57, 107, 107, 117, 37), STATUS = c(1, 1, 1, 2, 1, 3),
ABLA = c(NA, 5, 7, 3, 11, NA), PICO = c(NA, 4, 1, NA, NA, NA), POTR5 = c(NA, 7, NA, 5, NA, NA))
解决方案
我相信这应该这样做。通过使用 all.x = TRUE,您可以像 SQL 的左外连接一样进行合并。
merge(x = df1, y = df2, by = "ID", all.x = TRUE)