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

当dataframe A与B的指定字段值匹配时,如何将B的数据赋值到A的列?

最优实现方案

你要的效果本质是按Email字段对两个数据表做左连接,以下是两种常用的落地方式:

方案1:dplyr包实现(最推荐,代码可读性高、适配复杂场景)

# 加载依赖包
library(dplyr)

# 执行匹配
A <- A %>% 
  left_join(
    # 仅保留B表需要用到的两个字段,避免多余字段混入A表
    B %>% select(Email, Category),
    by = "Email"
  )

如果B表存在同一个Email对应多个不同Category的情况,可先对B表去重再匹配:

A <- A %>% 
  left_join(
    B %>% distinct(Email, .keep_all = TRUE) %>% select(Email, Category),
    by = "Email"
  )

方案2:基R实现(无需安装任何第三方包)

A <- merge(
  x = A,
  y = B[, c("Email", "Category")],
  by = "Email",
  all.x = TRUE # 保留A表所有行,未匹配到的Category自动填充NA
)

注意事项

  • 两种方案均不会修改A表原有行顺序、原有列的内容,输出结果和你给出的预期完全一致
  • 匹配前建议先确认B表的Email字段无重复值,避免匹配后出现多余的重复行

内容的提问来源于stack exchange,提问作者thpoole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:39:02