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

R语言如何依据df2的类别映射为df1匹配添加对应类别列

方法1:基础R match() 实现(最贴合需求逻辑,性能优异)

你要的匹配逻辑可以直接通过match函数实现,match(df1$v, df2$v)会返回df1每一行的v值在df2$v中对应的行索引,直接用索引取df2的类别列赋值即可:

df1$category <- df2$c[match(df1$v, df2$v)]

运行后输出结果如下:

v category
1  3        c
2  3        c
3  3        c
4  2        b
5  3        c
6  2        b
7  2        b
8  2        b
9  3        c
10 1        a
方法2:基础R 表合并函数merge()实现

如果需要保留两个表的所有关联列,可使用左连接合并:

# 保留df1的所有行,按v列关联匹配df2的类别
df1 <- merge(x = df1[, "v", drop = FALSE], y = df2, by = "v", all.x = TRUE)
# 按需修改列名
colnames(df1)[2] <- "category"
方法3:dplyr 左连接实现(tidyverse常用语法)

如果你习惯使用tidy生态的语法,用left_join更直观:

library(dplyr)
df1 <- df1 %>%
  # 移除原有空category列
  select(-category) %>%
  # 按v列左连接匹配df2的类别
  left_join(df2, by = "v") %>%
  # 修改列名符合需求
  rename(category = c)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:18:02