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

如何在R中利用索引将DataFrame的值替换为另一个DataFrame的对应值

解决方案

首先先构造你提供的示例数据(方便直接测试):

# 创建示例数据框
node_list <- data.frame(
  ID = c(1, 2, 3),
  loca2 = c("A", "B", "C"),
  stringsAsFactors = FALSE
)

sup <- data.frame(
  ID = c(1, 2, 3),
  To = c(2, 1, 1),
  stringsAsFactors = FALSE
)

方法一:Base R 原生实现

利用match()函数匹配ID的位置,直接替换对应列的值:

# 替换ID列
sup$ID <- node_list$loca2[match(sup$ID, node_list$ID)]
# 替换To列
sup$To <- node_list$loca2[match(sup$To, node_list$ID)]

match(x, table)会返回x中每个元素在table中的索引位置,用这个索引取node_list$loca2的对应值,就能完成替换。

方法二:dplyr 管道风格实现

如果你习惯用tidyverse系列工具,用dplyr的mutate()配合match()可以更简洁地完成:

library(dplyr)

sup <- sup %>%
  mutate(
    ID = node_list$loca2[match(ID, node_list$ID)],
    To = node_list$loca2[match(To, node_list$ID)]
  )

运行任意一种方法后,sup就会变成你想要的结果:

IDTo
AB
BA
CA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:42:25