заменить слова в столбце - PullRequest
0 голосов
/ 29 марта 2019
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 ]

2 голосов
/ 29 марта 2019

В одну сторону с 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)))
0 голосов
/ 29 марта 2019

Решения gsub тоже работают, вот и решение по тививеру.

require(tidyverse)
b <- a %>% mutate(
    text_new = str_remove_all(text, c("hello <firstname>", "Can you repeat"))
  )
b
0 голосов
/ 29 марта 2019

Существует функция gsub, которую вы можете использовать. Он просматривает строку с заданным шаблоном, а затем заменяет ее желаемым выводом.

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

Пример:

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

Тогда, если хотите, вы можете сохранить вывод как новый столбец или новую переменную.

Есть некоторые дополнительные вещи с учетом того, что gsub чувствителен к регистру, а что нет, но их можно найти здесь . Это также имеет несколько дополнительных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...