合并数据框删除重复项

时间:2021-07-28 19:20:36

标签: r merge

我想合并两个数据帧:data1 和 data2。

library(datasets)

#creating mock data
sample <- as.data.frame(HairEyeColor)
sample$id <- c("1", "1", "2", "3", "3", "4", "5", "6", "7", "8", "8", "9", "9", "10", "11", "12", "12", "13", "13", "14", "14", "15", "16", "16", "17", "17", "18", "18", "19", "19", "20", "21")

data1 <- sample[c(1, 3, 4, 6, 7, 10, 12, 14, 15, 16, 18, 20, 23, 25, 27, 29),]
data2 <- sample[c(2, 5, 8, 9, 11, 13, 17, 19, 21, 22, 24, 26, 28, 30, 31, 32),]

某些行具有重复的 ID。也就是说,科目 3、8、9、12、13、16、17、19 等都在 data1 和 data2 中。我想合并 data1 和 data2,这样如果有重复的 id,我会删除 data2 中的内容并使用 data1。但是,我还希望将一些仅在 data1(主题 2、4、5 等)或仅在 data2(主题 7、15、20、21)中的主题包含在合并数据集中。

#merge data1 and data2 together using 'merge' by id
merged <- merge(data1, data2, by='id', all=T)

'merge' 函数将两个数据帧合并在一起,但我有额外的列以 .y 结尾的第二个数据帧。并且 data2 中的行填充为 NA 而不是 data2 中的值。

(1) 如何去掉 .y 列? (2) 如何用 data2 中的值替换 NA 值?

编辑:添加当前和期望的结果

这是我目前的结果: enter image description here

我想要的结果是 ID 1 到 21,来自 Data2 的值而不是科目 15、20、21 的 NA,消除 .y 列。

0 个答案:

没有答案