Ich habe eine R-Frage, dass ich mir sogar sicher bin, wie ich in einem Satz wörte, und konnte dafür noch keine Antwort finden.
Ich habe zwei Datenframes, die ich "schneiden" möchte und finde alle Zeilen, in denen Spaltenwerte in zwei Spalten übereinstimmen. Ich habe versucht, zwei intersect () und which () Anweisungen mit & amp; & amp; zu verbinden, aber keiner hat mir gegeben, was ich will.
Hier ist was ich meine. Nehmen wir an, ich habe zwei Datenrahmen:
%Vor%Wie Sie sehen, gibt es einige Werte in der Spalte E-Mail, die sich überschneiden, und einige aus der Spalte Kampagne, die sich überschneiden. Ich möchte alle Zeilen von testData, in denen BOTH-Spalten übereinstimmen.
ie:
%Vor%BEARBEITEN:
Mein Ziel beim Auffinden dieser Spalten besteht darin, eine Zeile in der ursprünglichen Spalte aktualisieren zu können. Also die endgültige Ausgabe, die ich möchte, ist:
%Vor%Ich entschuldige mich, wenn dies ein Duplikat ist, und bedanke mich im Voraus für Ihre Hilfe!
EDIT2 ::
Ich habe am Ende nur eine For-Schleife benutzt, nichts Großartiges, aber ich fühle mich nicht effizient. Der Datensatz war klein genug, um es schnell zu tun. Wenn jemand eine schnelle R-Art hat, würde ich mich freuen, es zu sehen!
Wenn Sie data.tables
verwenden und nach den Spalten suchen, die Sie abgleichen möchten, können Sie Ihr Ziel in einer Zeile erreichen:
Sie möchten die Funktion merge
.
merge
wird normalerweise verwendet, um zwei Tabellen mit einem ähnlichen common zusammenzuführen, aber das Argument by
kann mehrere Spalten zulassen:
Alle Paare von Email
und Campaign
, die nicht übereinstimmen, werden standardmäßig verworfen. Das ist steuerbar durch die Argumente all.x
und all.y
, die standardmäßig auf FALSE
gesetzt sind.
Das Standardargument für by
ist intersect(names(x, y))
, daher müssen Sie in diesem Fall die Spalten technisch nicht angeben, aber es ist gut für die Übersichtlichkeit.