合并两个数据集只有第一行R

我需要合并两个数据集,但在第二个数据集中,可能有重复的id,例如多个id为1,1,1。如果有重复的ID,如何合并到它们的第一行?合并两个数据集只有第一行R

更清楚,这里有一个重复的例子:

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

I.E. 2行和3行(1个ID)不参与合并。

回答:

您可以使用data.table来完成。您只能保留第一次出现的位置,其中第二个数据集为id == 1,然后merge两个数据集。

这里是解决方案:

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

以上是 合并两个数据集只有第一行R 的全部内容, 来源链接: utcz.com/qa/266374.html

回到顶部