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

如何基于映射条件为数据框添加对应ID列?

为df2添加对应饮品的ID(基于df的映射)

嘿,这事儿很简单!我们可以通过数据合并的方式,把df里的ID映射到df2对应的行里。下面给你两种常用的实现方法:

方法一:Base R 原生 merge() 函数

首先先确认我们的原始数据框:

# 定义原始数据
df <- data.frame(ID = c("1", "2", "3"), Drink = c("Cola", "Pepsi", "Fanta"))
df2 <- data.frame(Drink = c("Cola", "Fanta", "Cola", "Pepsi", "Pepsi"))

使用merge()函数做左连接,保留df2的所有行,并匹配df中对应的ID:

# 执行合并,all.x = TRUE 表示保留df2的所有行
df2_with_id <- merge(df2, df, by = "Drink", all.x = TRUE)

# 查看结果
print(df2_with_id)

运行后输出的结果如下:

Drink ID
1 Cola 1
2 Cola 1
3 Fanta 3
4 Pepsi 2
5 Pepsi 2

方法二:Tidyverse 中的 left_join()(更直观的管道风格)

如果你习惯用tidyverse的语法,推荐用dplyr包的left_join()函数,代码可读性更高:

# 先安装并加载tidyverse(如果还没装的话)
# install.packages("tidyverse")
library(dplyr)

# 用管道语法实现左连接
df2_with_id <- df2 %>% 
  left_join(df, by = "Drink")

# 查看结果
print(df2_with_id)

这个方法得到的结果和上面完全一致,而且代码看起来更流畅~

小提示

  • 如果df里某个Drink对应多个ID(多对多映射),这两个方法都会自动处理,生成对应的多行结果;
  • 如果df2里出现了df中没有的饮品名称,对应的ID会显示为NA,这是正常的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:44