首页 > 解决方案 > 如何使用包含两种语言的单独数据框将语言 1 中的单个单词替换为语言 2 中的单词?

问题描述

我有一个带有西班牙语单词的数据框,并想用他们的英文翻译替换它们。翻译保存在包含两个单词的单独字典数据框中。原始数据框中的单词可以以随机顺序出现多次。原始数据框中也可以有没有翻译的单词;它们应保持其原始形式。

资源

library(tidyverse)
df <- tibble(item = c("agua","guerra","pelea","hijo","grande","pelea","agua","guerra"))
dictionary <- tibble(word_ES=c("agua","guerra","pelea"), word_EN=c("water","war","fight"))

在此处输入图像描述

期望的结果

df2 <- tibble(item = c("water","war","fight","hijo","grande","fight","water","war"))

在此处输入图像描述

我对使用 tidyverse 包的建议特别感兴趣,但对其他解决方案也很满意。

标签: rreplacecharactertidyverse

解决方案


一个选项是on加入data.table

library(data.table)
setDT(df)[setDT(dictionary), item := word_EN, on = .(item = word_ES)]
df
#     item
#1:  water
#2:    war
#3:  fight
#4:   hijo
#5: grande
#6:  fight
#7:  water
#8:    war

或者如果我们更喜欢tidyverse, 然后做 aleft_joincoalesce输出

library(tidyverse)
df %>%
   left_join(dictionary, by = c('item' = 'word_ES')) %>% 
   transmute(item = coalesce(word_EN, item))

推荐阅读