Seite 1 von 1

Dataframes zusammenführen und nach Spalte filtern

Verfasst: Mo Okt 19, 2020 6:53 pm
von nala
Hallo ihr Lieben,
ich habe (mal wieder :oops: ) ein Problem mit R. Nach einigem googeln und rumprobieren (u.a. mit der "merge", "inner_join" und "filter" Funktion, bei denen ich dann die doppelte Anzahl an Spalten, aber eine unveränderte Zeilenanzahl bekommen habe), habe ich es nun aufgegeben und wollte mal hier nachfragen, ob mir jemand helfen könnte.
Ich habe 2 Datensätze:

Code: Alles auswählen

df1 <- structure(list(id = c("1234", "1235", "1236"), 
                      urls = c("xyz.com", "abc.com", "zyx.com")), row.names = c(NA, 3L), class = "data.frame")
df2 <- structure(list(id = c("1234", "1234", "1236", "1237", "1238"),
                      urls = c("ghi.com", NA, NA, NA, NA)), row.names = c(NA, 5L), class = "data.frame")
Nun würde ich diese gerne zusammenfügen, und dabei df2 mithilfe von df1 quasi filtern. Bedeutet, ich würde gerne als Output die Daten von df1 haben und die Zeilen von df2, in denen die ID mit einer ID aus df1 übereinstimmt. Das würde dann so aussehen:

Code: Alles auswählen

result <- structure(list(id = c("1234", "1234", "1234", "1235", "1236", "1236"),
                      urls = c("xyz.com", "ghi.com", NA, "abc.com", "zyx.com", NA)), row.names = c(NA, 6L), 
                      class = "data.frame")
Kann mir jemand helfen?
Vielen Dank schonmal,
Nala

Re: Dataframes zusammenführen und nach Spalte filtern

Verfasst: Fr Okt 23, 2020 3:43 pm
von jogo
Hallo Nala,

fast ist es wie:

Code: Alles auswählen

r <- rbind(df1, df2)
r[order(r$id), ]
Aber von diesem Ergebnis möchtest Du einige NA-Werte behalten - nämlich die, bei denen es noch nichtNA-Werte gibt.
Darf ich fragen, warum Du genau diese NA-Werte behalten möchtest?

Gruß, Jörg