Ich habe zwei Datenrahmen, die eine gemeinsame Spalte teilen (mit dem Namen sys_loc_code). Der erste Datenrahmen (df1) hat 1033 Zeilen. Der zweite Datenrahmen (df2) hat 2751.Join und Merge ist nicht korrekt zurückgegeben Anzahl der Zeilen in R
Ich möchte df1 und df2 kombinieren, so dass ein neuer Datenrahmen mit allen Spalten in df1 und df2 erhalten nur Zeilen aus df1 erhalten.
ich join
versucht haben, left_join
und inner_join
(von dplyr
) und eine einfache merge
. Jeder von diesen gibt 2057 Zeilen zurück, und ich denke, es sollte nur 1033 zurückgeben, um zu entsprechen, was in df1
ist. Wie gebe ich nur Zeilen von df1 zurück?
Ich kann die Datasets, die dieses Problem verursacht haben, nicht teilen. Doch nach einem bisschen Beratung kann ich das Problem mit diesem minimalen Beispiel neu erstellen:
df1 <-
data.frame(
sys_loc_code = c("A", "B", "C")
, df1Val = 1
)
df2 <-
data.frame(
sys_loc_code = c("A", "B", "B", "C", "D")
, df2Val = c(1, 1, 2, 1, 1)
)
left_join(df1, df2)
Returns 4 Reihen, während df1
nur drei Zeilen.
zu halten übereinstimmen, das ist wahr. Ist es besser, wenn ich versuche, eine Nachschlagetabelle oder etwas zu verwenden, um Spalten in df2 zu füllen, die ich in df1 haben möchte? –
Es hängt von Ihrem Ziel ab. Ich würde 'df2%>% group_by (sys_loc_code)' verwenden, gefolgt von 'summarise',' slice' oder 'filter', je nachdem, ob Sie ein Aggregat, den ersten oder einen bestimmten Eintrag und dann' left_join' wollen das Ergebnis. –