如何合并2个相似的数据帧但具有更重要的一个?合并数据帧并覆盖值
例如:
数据帧1
Date Col1 Col2
jan 2 1
feb 4 2
march 6 3
april 8 NA
数据帧2
Date Col2 Col3
jan 9 10
feb 8 20
march 7 30
april 6 40
与数据帧1采取优先次序但数据帧2填充坯
DataframeMerge
合并这些由日期Date Col1 Col2 Col3
jan 2 1 10
feb 4 2 20
march 6 3 30
april 8 6 40
编辑 - 解决方案
commonNames <- names(df1)[which(colnames(df1) %in% colnames(df2))]
commonNames <- commonNames[commonNames != "key"]
dfmerge<- merge(df1,df2,by="key",all=T)
for(i in commonNames){
left <- paste(i, ".x", sep="")
right <- paste(i, ".y", sep="")
dfmerge[is.na(dfmerge[left]),left] <- dfmerge[is.na(dfmerge[left]),right]
dfmerge[right]<- NULL
colnames(dfmerge)[colnames(dfmerge) == left] <- i
}
很好的答案,但在代码中的几个注释会使它非常有用。 – Sam
欣赏答案,但我很遗憾地说我忘记提及一个重要的信息,除了日期(关键)列我不知道表中的其他列。有些可能会匹配一些可能不会。我想我可以使用名称(dfrm1)和名称(dfrm2)之间的匹配来获取我需要应用代码的列。 (将x和y附加到col的名字当然) – EvilWeebl
感谢您的帮助,我接受了您的答案并对其进行了扩展,以涵盖相似列未知的情况。我已经将解决方案添加到了我的问题中,以帮助未来的任何人。 – EvilWeebl