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

使用match(而非merge)从大型DataFrame填充列值

不使用merge匹配name列填充DataFrame的code列

你的代码问题点

你写的代码存在语法错误:最后一个括号误用了),应该改为];另外提取列的方式可以更简洁可靠。

修正后的可行代码

方式1:修正原代码的语法问题

df1$code <- df2[match(df1$name, df2$name), "id"]

或者用$直接提取列,可读性更强:

df1$code <- df2$id[match(df1$name, df2$name)]

方式2:命名向量映射(大规模数据更高效)

先把df2的name作为名称、id作为值生成命名向量,再直接匹配赋值:

# 构建name到id的映射向量
id_mapping <- setNames(df2$id, df2$name)
# 填充df1的code列
df1$code <- id_mapping[df1$name]

最终效果

运行后df1的code列会被正确填充为对应id值:

> df1
         name code
1   Player 3    3
2  Player 14   14
3  Player 16   16
4  Player 22   22
5  Player 43   43
6  Player 45   45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:06