R语言基于公共列从另一数据框匹配提取指定字段的实现方法
实现方案
你要的是基于共同列person,保留whiskey_drinkage的全部行,匹配data2的sex和birthday字段,属于典型的左连接场景,两种常用实现方式如下:
方法1:Base R 实现(无需加载额外包)
# 以whiskey_drinkage为主表,匹配data2的对应字段 data3 <- merge( x = whiskey_drinkage, y = data2[, c("person", "sex", "birthday")], by = "person", all.x = TRUE )
参数说明:
x:主表,即需要完整保留所有行的whiskey_drinkagey:关联表,这里仅选取需要用到的3个字段,避免合并后出现多余列by:两个表的共同关联列名all.x = TRUE:强制保留x表的所有行,哪怕y表没有对应匹配记录(对应字段会填充NA),如果需要仅保留两个表都存在的person记录,可以删除这个参数,默认值为FALSE。
方法2:dplyr 实现(tidyverse生态常用语法)
# 先加载dplyr包,未安装的话先运行 install.packages("dplyr") library(dplyr) data3 <- whiskey_drinkage %>% left_join( data2 %>% select(person, sex, birthday), by = "person" )
如果需要仅保留两个表都存在的person记录,把left_join替换为inner_join即可。
以上两种方案都支持万行级别以上的数据集运算,完全满足你上千行数据的处理需求。
内容的提问来源于stack exchange,提问作者Badboybørge
相关产品推荐
相关产品推荐

