【问题标题】:Replace parts of text values with a lookup table?用查找表替换部分文本值?
【发布时间】:2021-06-11 08:23:28
【问题描述】:

我将如何根据查找表(名称中的 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

【问题讨论】:

  • 您能否提供一个示例来说明您希望输出的样子?此外,根据您的定义,您在顶部打印的 df1 似乎没有正确的“问题”列值。
  • 抱歉,复制了错误的 df - 现在应该可以理解了吗?

标签: r dplyr replace lapply gsub


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2013-10-22
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多