Ich habe zwei Datenrahmen in R:Wie wird ein R-Datenrahmen mit den Werten eines anderen R-Datenrahmens verknüpft?
Died.At <- c(22,40,72,41, ...)
Writer.At <- c(16, 18, 36, 36)
Name <- c("John Doe", "Edgar Poe", "Walt Whitman", "Jane Austen", ...)
Gender <- c("MALE", "MALE", "MALE", "FEMALE", ...)
Date.Of.Death <- c("2015-05-10", "1849-10-07", "1892-03-26","1817-07-18", ...)
Pet <- c("cat", "dog", "cat", "cat")
df1 = data.frame(Died.At, Writer.At, Name, Gender, Pet)
print(df1)
Died.At Writer.At Name Gender Pet
1 22 16 John Doe MALE cat
2 40 18 Edgar Poe MALE dog
3 72 36 Walt Whitman MALE cat
4 41 36 Jane Austen FEMALE cat
.....
In df1
nicht jede Zeile für Name
einzigartig ist (dh es gibt mehrere Zeilen mit demselben Autor sind.)
Der zweite Datenrahmen df2
, gibt es auch eine Spalte Name
mit beiden Autoren aus df1
(zB Jane Austen) und völlig neuen Autoren. Dieser Datenrahmen ist auch viel größer.
print(length(unique(df1$Name)))
## output 1168
print(length(unique(df2$Name)))
## output 5572
würde Ich mag df2
, so dass die einzigen Namen die Namen von df1
sind die Teilmenge.
Meine Idee war es, dies zu tun:
subset_df2 = df2[df2$Name == unique(df1$Name)]
aber ich würde erwarten, dass es 1168 einzigartige Autorennamen, hier zu sein:
print(length(unique(subset_df2$Name)))
## output 880
, die weniger ist, als ich es erwartet hatte. Wo ist mein Fehler?
Es gibt Inkonsistenz in dieser Anweisung "Jeder Wert in der Spalte Name ist eindeutig. In df1 ist jedoch nicht jede Zeile eindeutig (d. H. Es gibt mehrere Zeilen mit demselben Autor)." Wenn jede Zeile in df1 nicht eindeutig ist und einige Zeilen denselben Autor haben, wie ist Name eindeutig, wenn df1 aus Name konstruiert wird. Auch in Ihrem Code haben Sie First.Name und Second.Name, aber sie erscheinen nicht in DF1? – Djork
@ R.S. Ich habe das obige bearbeitet --- danke. – ShanZhengYang
'subset_df2 <- Teilmenge (df2, Name% in% df1 $ Name)' – jdobres