仅通过R中的第一行合并两个数据集
我需要合并两个数据集,但在第二个数据集中,可能有重复的id,例如多个id为1,1,1。如果有重复的id,如何合并到它们的第一行 更清楚地说,这里有一个可复制的示例:仅通过R中的第一行合并两个数据集,r,merge,R,Merge,我需要合并两个数据集,但在第二个数据集中,可能有重复的id,例如多个id为1,1,1。如果有重复的id,如何合并到它们的第一行 更清楚地说,这里有一个可复制的示例: df1 structure(list(id = 1:2, y = 10:11), .Names = c("id", "y"), class = "data.frame", row.names = c(NA, -2L)) df2 structure(list(id = c(1L, 1L, 1L, 2L), x1 = 435:438
df1
structure(list(id = 1:2, y = 10:11), .Names = c("id", "y"), class = "data.frame", row.names = c(NA,
-2L))
df2
structure(list(id = c(1L, 1L, 1L, 2L), x1 = 435:438, x2 = c(435L,
436L, 436L, 438L), x3 = c(435L, 436L, 436L, 438L)), .Names = c("id",
"x1", "x2", "x3"), class = "data.frame", row.names = c(NA, -4L
))
Eaxample:在输出中,我希望使用这种格式
id y x1 x2 x3
1 10 435 435 435
2 11 438 438 438
也就是说,2行和3行(1个id)不参与合并。您可以使用
数据表进行合并。
。您只能保留第二个数据集中id==1
的第一个匹配项,然后将这两个数据集合并
以下是解决方案:
library(data.table)
setDT(df2)
df2[, idx := 1:.N, by = id]
df2 <- df2[idx == 1, ]
df2[, idx := NULL]
output <- merge(df1, df2, by = "id")
output
id y x1 x2 x3
1 1 10 435 435 435
2 2 11 438 438 438