Mam dwie ramki danych. Jeden (df1
) zawiera wszystkie kolumny i wiersze będące przedmiotem zainteresowania, ale zawiera brakujące obserwacje. Drugi (df2
) zawiera wartości, które mają być użyte zamiast brakujących obserwacji, i zawiera tylko kolumny i wiersze, dla których co najmniej jeden NA
był obecny w df1
. Chciałbym połączyć oba zestawy danych w jakiś sposób, aby uzyskać desired.result
.scalanie ramek danych w celu wyeliminowania brakujących obserwacji
Wydaje się, że to bardzo prosty problem do rozwiązania, ale rysuję puste miejsce. Nie mogę uzyskać merge
do pracy. Może mógłbym napisać zagnieżdżony for-loops
, ale jeszcze tego nie zrobiłem. Próbowałem też kilka razy aggregate
. Trochę się boję, aby opublikować to pytanie, obawiając się, że moja karta R
może zostać unieważniona. Przepraszam, jeśli to duplikat. Wyszukiwałem tutaj i w Google dość intensywnie. Dziękuję za radę. Preferowane jest rozwiązanie w bazie R
.
df1 = read.table(text = "
county year1 year2 year3
aa 10 20 30
bb 1 NA 3
cc 5 10 NA
dd 100 NA 200
", sep = "", header = TRUE)
df2 = read.table(text = "
county year2 year3
bb 2 NA
cc NA 15
dd 150 NA
", sep = "", header = TRUE)
desired.result = read.table(text = "
county year1 year2 year3
aa 10 20 30
bb 1 2 3
cc 5 10 15
dd 100 150 200
", sep = "", header = TRUE)
'FUN = Filter, f = Negate (is.na)' byłaby inna opcja dla funkcji (by zachować duplikaty, co nie powinno się zdarzyć i tak, jeśli specyfikacja OP są poprawne) – mnel
Och, to chłodny. Dobra robota. – Aaron
Doskonały - doskonały przykład tego, jak baza R ma wiele naprawdę schludnych i łatwo interpretowalnych funkcji, które często są pomijane. – thelatemail