Ich versuche, eine neue Spalte in einem vorhandenen Datenrahmen (DF1) zu erstellen, indem ich die Werte der Spalte x mit den Werten der Spalte y in einem anderen Datenrahmen (DF2) vergleiche.Neue Spalte im Datenrahmen basierend auf Übereinstimmung zwischen zwei Spalten
Das Ergebnis sollte wie df_end aussehen. Wo eine Übereinstimmung vorliegt, sollte der Wert von Spalte x zurückgegeben werden. Wo es keine Übereinstimmung gibt, sollte NA zurückgegeben werden.
df1 <- data.frame(x = c("blue2", "blue6", "green9", "green7"))
df2 <- data.frame(y = c("blue2", "green9"))
df_end <- data.frame(x = c("blue2", "blue6", "green9", "green7"),
match = c("blue2", NA, "green9", NA))
Ich habe experimentiert mit merge, match und wenn, sonst Aussagen, aber ich kann es nicht herausfinden. Jemand hat einen Ratschlag für mich?
#Attempt 1: Merge
df1$match <- merge(df1, df2, by.x = x, all = TRUE)
Dies funktioniert nicht, da df1 und df2 unterschiedlich lang sind.
Verwenden 'merge' mit dem' all true' Argumente = und stellen Sie die ' by.x' und 'by.y' Argumente, um den jeweiligen Variablennamen zu entsprechen. – lmo
'df2 $ y [Übereinstimmung (df1 $ x, df2 $ y)]' – Sotos