Ich starrte nur mit R und ich versuche, 2 Spalten von zwei verschiedenen Tabellen zu vergleichen. Wenn die Übereinstimmung wahr ist, dann möchte ich den spezifischen Wert (in DF1) ersetzen. Ich habe auch das Problem, dass ich sehr über die Verwendung zusätzlicher Pakete eingeschränkt bin, da ich das Skript in einer Datenbank verwenden möchte.Vergleichen und ersetzen Frames/Tabellen bestimmte Zeilen
df1:
DE
Deutschland
England
Germany
Italien
df2
GE EN
Deutschland Germany
Italien Italy
England UK
Ergebnis: df1:
DE
Deutschland
England
**Deutschland**
Italien
Ich versuchte folgenden Code ein:
df1 <- data.frame("DE" = c("Deutschland", "England", "Germany", "Italien"))
df2 <- data.frame("GE" = c("Deutschland", "Italien", "England"), "EN" = c("Germany", "Italy", "UK"))
df1[] <- lapply(df1, as.character)
df2[] <- lapply(df2, as.character)
df1 <- ifelse(!(df1$DE %in% df2$EN), df1$DE, df2$GE)
Statt "Deutschland" ersetzt es "England". Wie kann ich die richtige Zeile ersetzen?
'% in%' verwendet 'Spiel '. Bei großen Datasets kann es vorteilhaft sein, 'ind <- match (df1 $ DE, df2 $ EN, nomatch = 0) 'gefolgt von' df1 $ DE [ind> 0] <- df2 $ GE [ind] 'zu verwenden. (Mit diesem kleinen Datensatz ist er schon um 30% schneller, aber dieser Zeitunterschied ist nicht signifikant.) – r2evans
Danke für die Antwort und Erklärung :) –
@ r2evans thx & added :-) – Jaap