Ich versuche, table1 mit übereinstimmenden val2-Werten von table2 auszufüllen
table1$New_val2 = table2[table2$pid==table1$pid,]$val2
Aber ich bekomme die Warnung
longer object length is not a multiple of shorter object length
das ist fair genug, weil die Tischlängen nicht gleich sind.
Bitte weisen Sie mich bitte auf den richtigen Weg.
merge(table1, table2[, c("pid", "col2")], by="pid")
Fügen Sie das Argument all.x=TRUE
Hinzu, um alle Pids in Tabelle1 beizubehalten, die keine Übereinstimmungen in Tabelle2 haben.
Sie waren auf dem richtigen Weg. Hier ist eine Möglichkeit, Match zu verwenden ...
table1$val2 <- table2$val2[match(table1$pid, table2$pid)]
Ich bin nicht sicher, ob Sie das meinen, aber Sie könnten Folgendes verwenden:
newtable <- merge(table1,table2, by = "pid")
Dadurch wird eine neue Tabelle mit dem Namen newtable erstellt, mit 3 Spalten und den Werten, die der id entsprechen, in diesem Fall "pid".
Ich bin hier zu spät dran, aber falls noch jemand dieselbe Frage stellt:
Genau das tut dplyrs inner_merge.
table1.df <- dplyr::inner_merge(table1, table2, by=pid)
Der by-Befehl gibt an, welche Spalte verwendet werden soll, um die Zeilen abzugleichen.