You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用dplyr按id匹配两数据框列值并校验一致性的实现方法

R dplyr实现两表ID匹配校验方案

核心思路

以采集表dat1为基准做左连接,保留dat1所有行,匹配基准表dat2的对应gear值,再按校验规则生成CHECK列,最终整理为要求的三列结构。
校验规则:

  • 若ID在基准表存在,且两表gear值相等 → CHECK返回TRUE
  • 若ID在基准表存在,但两表gear值不等 → CHECK返回FALSE
  • 若ID在基准表无匹配记录 → CHECK返回NA

完整代码

library(dplyr)
library(tibble)

# 构造示例数据
id1 = c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10")
Gear1 = c("A","B","C","D","E","F","G","H","I","G")
dat1 = tibble(id1,Gear1)

id2 = c("A1","A4","A2","A5","A13","A3","A9","A8","A7","A20","A21","A23","A33")
Gear2 = c("A","E","A","E","B","C","I","B","G","G","B","D","E")
dat2 = tibble(id2,Gear2)

# 核心处理逻辑
res <- dat1 %>%
  left_join(dat2, by = c("id1" = "id2")) %>%
  mutate(CHECK = case_when(
    is.na(Gear2) ~ NA,
    Gear1 == Gear2 ~ TRUE,
    TRUE ~ FALSE
  )) %>%
  select(id = id1, gear = Gear1, CHECK)

输出结果预览

运行代码后得到的结果如下:

idgearCHECK
A1ATRUE
A2BFALSE
A3CTRUE
A4DFALSE
A5ETRUE
A6FNA
A7GTRUE
A8HFALSE
A9ITRUE
A10GNA

内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:33:31