列中的替代词

时间:2019-03-29 09:46:52

标签: r

a <- data.frame(text = c("hello <firstname> what do you wish to order today?", "I don't understand this. Can you repeat"))

我想用空白代替“你好”和“你能重复”吗,这样我就可以得到文本的其余部分。

如何给出要用空白替换的特定单词列表。 这里的具体单词是“你好,你可以重复”。像这样,我的数据框中有很多单词。

数据帧中的预期输出:

[1] what do you wish to order today?

[2] I don't understand this.

3 个答案:

答案 0 :(得分:2)

使用gsub的一种方式:

#add the words to remove in an atomic vector
to_remove <- c('hello', 'Can you repeat')
#paste the words together and remove with gsub
gsub(paste(to_remove, collapse = '|'), ' ', a$text)
#[1] "  <firstname> what do you wish to order today?"
#[2] "I don't understand this.  "

根据@Sotos注释,在处理文本时,最好将文本小写并消除尾随空格:

trimws(paste(to_remove, collapse = '|'), '', tolower(a$text)))

答案 1 :(得分:0)

有一个可以使用的名为gsub的函数。它会查看给定模式的字符串,然后将其替换为所需的输出。

gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)

示例:

gsub("hello", "", a$text)

然后,如果您愿意,可以将输出另存为新列或新变量。

还有其他一些事情,gsub区分大小写,但不区分大小写,但是可以在here中找到。这也有一些其他示例。

答案 2 :(得分:0)

gsub解决方案也可以使用,这是一个整洁的解决方案。

require(tidyverse)
b <- a %>% mutate(
    text_new = str_remove_all(text, c("hello <firstname>", "Can you repeat"))
  )
b