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

在R语言中利用字典数据框替换目标数据框指定列的德语城市名

用字典数据框替换数据框中的德语城市名

首先先修正你提供的示例代码里的错误(变量名错误、字符串未加引号、字典列顺序不符),确保代码能正常运行:

# 修正后的目标数据框
ticket_id <- c(1,3,4,5)
depart_city <- c("Lemberg", "Köln", "Düsseldorf", "Lemberg")  # 字符串需加引号
price <- c(20,25,22,21)
tickets <- data.frame(ticket_id, depart_city, price)  # 修正变量名错误

# 修正后的字典数据框(第一列为德语,第二列为英语)
de <- c("Lemberg", "Düsseldorf", "Köln")
eng <- c("Lviv", "Duesseldorf", "Cologne")
dict <- data.frame(de, eng)  # 调整列顺序符合需求

接下来提供两种实用的替换方法:

方法一:Base R 原生实现(无需额外包)

利用match()函数匹配德语城市名的位置,提取对应的英语名称替换目标列:

# 匹配目标列每个值在字典德语列中的位置
match_pos <- match(tickets$depart_city, dict$de)
# 替换示例中的depart_city列(对应你的第17列)
tickets$depart_city <- dict$eng[match_pos]

如果目标数据框第17列没有命名,可直接用列索引操作:

# 替换第17列
tickets[, 17] <- dict$eng[match(tickets[, 17], dict$de)]

方法二:用dplyr包(更直观的数据分析工作流)

如果你习惯tidyverse工具链,用left_join()连接数据框后替换更清晰:

先安装并加载dplyr包:

install.packages("dplyr")
library(dplyr)

执行替换操作:

tickets <- tickets %>%
  left_join(dict, by = c("depart_city" = "de")) %>%  # 按德语城市名关联
  mutate(depart_city = eng) %>%  # 用英语名称覆盖原德语列
  select(-eng)  # 删除临时生成的eng列

若用列索引操作第17列(假设列名为X17):

tickets <- tickets %>%
  left_join(dict, by = c(X17 = "de")) %>%
  mutate(X17 = eng) %>%
  select(-eng)

注意事项

  • 若目标数据框存在字典中没有的德语城市名,替换后会显示NA,可使用replace()函数按需处理缺失值。
  • 确保两数据框中德语城市名的字符编码一致,避免因编码差异导致匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:15:34