我想合并两个数据帧: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 值?
编辑:添加当前和期望的结果
我想要的结果是 ID 1 到 21,来自 Data2 的值而不是科目 15、20、21 的 NA,消除 .y 列。