R语言中如何按name字段匹配两个数据集的DOB列
解决方法
你可以通过左连接实现需求,保留DOB.data2的全部记录,匹配到的name对应填充DOB值,未匹配的自动填充为NA,以下是两种常用实现方式:
方法1:基础R原生函数实现
直接用merge()函数做左连接即可:
# 左连接,保留DOB.data2的所有行 merged_data <- merge(x = DOB.data2, y = DOB.data, by = "name", all.x = TRUE)
参数说明:
by = "name":指定两个数据集按name字段作为匹配键all.x = TRUE:保留左表(即第一个参数x=DOB.data2)的全部记录,右表无匹配的字段值自动设为NA
方法2:dplyr包实现(更简洁的管道操作)
如果你习惯用tidyverse生态的函数,用left_join()即可:
# 加载dplyr包 library(dplyr) merged_data <- DOB.data2 %>% left_join(DOB.data, by = "name")
注意
你给出的DOB.data2示例定义存在小问题:x列有4个值但行号设置为3行,运行会报错,实际使用时将对应代码的row.names = c(NA, -3L)改为row.names = c(NA, -4L)即可,不影响合并逻辑。
内容的提问来源于stack exchange,提问作者OMG C
相关产品推荐
相关产品推荐

