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.
答案 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