Sagen, ich habe zwei Datenrahmen wie folgt aus:R: zwei Datenrahmen zusammenführen, wenn eine von zwei Kriterien entspricht
n = c(2, 3, 5, 5, 6, 7)
s = c("aa", "bb", "cc", "dd", "ee", "ff")
b = c(2, 4, 5, 4, 3, 2)
df = data.frame(n, s, b)
# n s b
#1 2 aa 2
#2 3 bb 4
#3 5 cc 5
#4 5 dd 4
#5 6 ee 3
#6 7 ff 2
n2 = c(5, 6, 7, 6)
s2 = c("aa", "bb", "cc", "ll")
b2 = c("hh", "nn", "ff", "dd")
df2 = data.frame(n2, s2, b2)
# n2 s2 b2
#1 5 aa hh
#2 6 bb nn
#3 7 cc ff
#4 6 ll dd
Ich möchte, dass sie fusionieren folgendes Ergebnis zu erreichen:
#n s b n2 s2 b2
#2 aa 2 5 aa hh
#3 bb 4 6 bb nn
#5 cc 5 7 cc ff
#5 dd 4 6 ll dd
Grundsätzlich , was ich erreichen möchte, besteht darin, die beiden Datenrahmen zusammenzuführen, wenn die Werte in s der ersten Daten in den Spalten s2 oder b2 von data2 gefunden werden.
Ich weiß, dass die Zusammenführung funktionieren kann, wenn ich die zwei Spalten von jedem Datenrahmen angeben, aber ich bin nicht sicher, wie die OR-Bedingung in der Zusammenführungsfunktion HINZUFÜGEN. Oder wie Sie dieses Ziel mit anderen Befehlen aus Paketen wie dpylr erreichen.
Um zu klären, wird es auch eine Situation geben, wo s2 und b2 Übereinstimmungen mit s Spalte in der gleichen Zeile haben. Wenn dies der Fall ist, füge sie einfach einmal zusammen.
Es könnte funktionieren, aber beide der tatsächlichen zwei Datenrahmen habe ich über 30 Spalten. Wenn ich jeweils eine Spalte hinzufüge, dauert es zu lange. Zur Klarstellung wird es auch keine Situation geben, in der s2 und b2 Übereinstimmungen mit der Spalte s in derselben Zeile haben. – lll
Ich poste ein kompaktes für das tut beide Spalten in einem Schritt: –
Danke für die Überarbeitung der Lösungen. Aber was ich meine ist, dass in den tatsächlichen Daten jede Daten mehr als 30 Spalten zusammen haben. Und 2 Spalten sind das "s" und "c" wie im ersten Datenrahmen. Ich möchte diese Spalten als Auswahlkriterien verwenden, ohne andere Spalten (die anderen über 20 Spalten) zu verlieren, die ich nicht hochgeladen habe.Ist das in dieser Lösung, fügt es effektiv zwei weitere Spalten zu df2 hinzu, aber was ich wirklich will, ist zusätzlich zu den zwei Spalten, das Ergebnis von mehr als 20 Spalten. – lll