用查找 table 替换部分文本值?

Replace parts of text values with a lookup table?

我如何根据查找表(名称中的 new.text)替换部分值(df1 中的问题)——这看起来像 df2 中的内容。我假设带有 gsub 的 lapplpy 可以完成这项工作,但无法弄清楚语法!

set.seed(42)
df1 <- data.frame(question = c("Hello - a", "Hello - b", "Goodbye - a", "Goodbye - b"),
                  variable = rnorm(4))

df1
     question   variable
1   Hello - a  1.3709584
2   Hello - b -0.5646982
3 Goodbye - a  0.3631284
4 Goodbye - b  0.6328626


names <- data.frame(text = c("Hello", "Goodbye", "Good Morning"),
                    new.text = c("1", "2", "3"))

names
          text new.text
1        Hello        1
2     Goodbye         2
3 Good Morning        3


set.seed(42)
df2 <- data.frame(question = c("1 - a", "1 - b", "2 - a", "2 - b"),
                  variable = rnorm(4))

df2
  question   variable
1    1 - a  1.3709584
2    1 - b -0.5646982
3    2 - a  0.3631284
4    2 - b  0.6328626

使用stringr::str_replace_all-

df1$question <- stringr::str_replace_all(df1$question, 
                   setNames(names$new.text, names$text))
df1

#  question   variable
#1    1 - a  1.3709584
#2    1 - b -0.5646982
#3    2 - a  0.3631284
#4    2 - b  0.6328626