R语言两个数据框字段字符匹配时如何获取对应的id值
R实现两数据框匹配提取对应id的方案
下面给出三种常用的实现方式,可根据使用场景选择:
- 基础R
merge()关联法
适合需要生成完整关联结果表的场景,通过指定匹配字段完成关联:
# 保留df1所有行,按name和B字段匹配后关联id result <- merge(df1, df, by.x = "name", by.y = "B", all.x = TRUE)
运行后result数据框会自动新增id列,匹配不到的位置会返回NA。
- 基础R
match()取值法
如果仅需提取id向量不需要完整关联表,用该方法更高效:
# 直接为df1新增id列 df1$id <- df$id[match(df1$name, df$B)]
match()会返回df$B中匹配到df1$name的位置索引,直接取对应id值即可,示例中匹配health时会返回索引2,对应id值为2,完全符合需求。
- dplyr包
left_join()法
适合习惯tidyverse语法的用户,代码可读性更高:
library(dplyr) result <- df1 %>% left_join(df, by = c("name" = "B"))
运行结果和merge方法一致。
内容的提问来源于stack exchange,提问作者Fariya
相关产品推荐
相关产品推荐

