Dataframes zusammenführen und nach Spalte filtern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
nala
Beiträge: 3
Registriert: Do Okt 01, 2020 6:40 pm

Dataframes zusammenführen und nach Spalte filtern

Beitrag 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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Dataframes zusammenführen und nach Spalte filtern

Beitrag 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
Antworten