merge(table1, table2[, c("pid", "val2")], by="pid")
使用all.x=TRUE
参数,可以保留在table2中没有匹配的所有pid在table1中的记录...
你走在了正确的道路上。这里介绍一种使用match的方法...
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_join(table1, table2, by=pid)
by-command(按照指定方式)指定使用哪一列来匹配行。
编辑:我曾经很难记住它是 [join] 而不是 [merge]。
dplyr::inner_join()
而不是merge()
,因为在这个过程中表格不会被打乱。 - Yollanda Beetroot
all.x=TRUE
参数:merge(table1, table2, by="pid")
。 - cory