Jak scalić 2 podobne ramki danych, ale czy mają one większe znaczenie?Scalanie ramek danych i nadpisywanie wartości
Na przykład:
Dataframe 1
Date Col1 Col2
jan 2 1
feb 4 2
march 6 3
april 8 NA
Dataframe 2
Date Col2 Col3
jan 9 10
feb 8 20
march 7 30
april 6 40
złączenie według daty dataframe 1 nadrzędności ale dataframe 2 wykroje napełniania
DataframeMerge
Date Col1 Col2 Col3
jan 2 1 10
feb 4 2 20
march 6 3 30
april 8 6 40
EDIT - ROZWIĄZANIE
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
}
dobra odpowiedź, ale kilka dodatkowych komentarzy w kodzie sprawi, że będzie ona bardzo przydatna. – Sam
Doceniam odpowiedź, ale "przykro mi to mówić, zapomniałem wspomnieć o jednym ważnym elemencie informacji, innym niż data (klucz) kolumny Nie znam innych kolumn w tabelach. Niektóre mogą pasować do niektórych, nie mogą.Przypuszczam, że mógłbym po prostu użyć dopasowania między nazwami (dfrm1) i nazwami (dfrm2), aby uzyskać kolumny, których potrzebuję do zastosowania twojego kodu? (dołączając oczywiście x i y do nazw pseudonimów) – EvilWeebl
Dzięki za pomoc, wziąłem twoją odpowiedź i rozszerzyłem ją, aby pokryć, gdy podobne kolumny są nieznane. Dodałem rozwiązanie do mojego pytania, aby pomóc każdemu w przyszłości. – EvilWeebl