r - 如何使用包含两种语言的单独数据框将语言 1 中的单个单词替换为语言 2 中的单词?

标签 r replace character tidyverse

我有一个包含西类牙语单词的数据框,想将其替换为英语翻译。翻译保存在包含这两个单词的单独字典数据框中。原始数据框中的单词可以以随机顺序出现多次。原始数据框中也可能存在未经翻译的单词;它们应保持其原始形式。

来源

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"))

enter image description here

期望的结果

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

enter image description here

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

最佳答案

选项是 data.table 中的连接 on

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,则执行 left_join合并输出

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

关于r - 如何使用包含两种语言的单独数据框将语言 1 中的单个单词替换为语言 2 中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57892944/

相关文章:

r - 基本的 dyplr 函数给出错误 : "check_dots_used"

c++ - Rcpp 代码示例 cppFunction

r - .data 和 cur_data() 之间的区别

java - 使用 Java 字符串替换方法产生与预期不同的结果,为什么?

replace - 仅使用 Redis 而不是 RDBMS 的缺点是什么?

python - 如何使用python计算没有空格的字符串中的字符?

r - 从列表中选择

python - 遍历嵌套列表并对每个元素进行操作

apache-flex - 将CharCode转换为Char?

Python 字符和单词计数