Table2の一致するval2値でtable1に入力しようとしています
table1$New_val2 = table2[table2$pid==table1$pid,]$val2
しかし、私は警告を受け取ります
longer object length is not a multiple of shorter object length
テーブルの長さが同じではないため、これは十分に公平です。
正しい方法を教えてください。
merge(table1, table2[, c("pid", "col2")], by="pid")
Table2に一致しないすべてのpidをtable1に保持するために、_all.x=TRUE
_引数を追加します。
あなたは正しい軌道に乗っていました。ここにマッチを使用する方法があります...
table1$val2 <- table2$val2[match(table1$pid, table2$pid)]
あなたがこれを意味するかどうかはわかりませんが、あなたは使うかもしれません:
newtable <- merge(table1,table2, by = "pid")
これにより、newtableという名前の新しいテーブルが作成され、3つの列とそれらの値がID(この場合は "pid")に一致します。
私はここに遅れていますが、他の誰かが同じ質問をした場合:
これはまさにdplyrのinner_mergeが行うことです。
table1.df <- dplyr::inner_merge(table1, table2, by=pid)
By-commandは、行の照合に使用する列を指定します。