Stprl из фрейма данных в другой - PullRequest
0 голосов
/ 16 июня 2020

Как возможно иметь такой фрейм данных:

df_words <- data.frame(words = c("4 Google", "5Amazon", "4sec"))

заменить в строках фрейма данных следующим образом:

df <-  data.frame(id = c(1,2,4),  text = "Increase for 4 Google", "There is a slight decrease for 5Amazon", "I will need 4sec more"), stringAsFactors = FALSE)

заменить указанным c слово один из перечисленных в df_words следующим образом

"4 Google|5Amazon" -> "stock"
"4sec" -> time

Пример ожидаемого результата

data.frame(id = c(1,2,4),  text = "Increase for stock", "There is a slight decrease for stock", "I will need time more"), stringAsFactors = FALSE)

1 Ответ

1 голос
/ 16 июня 2020

Я рекомендую библиотеку stringi. Пример:

library(stringi)
strings = c("Increase for 4 Google", "There is a slight decrease for 5Amazon", "I will need 4sec more")
patterns = c("4 Google", "5Amazon", "4sec")
replacements = c("stock", "stock", "time")
strings = stri_replace_all_fixed(strings,patterns,replacements)

Однако вы, вероятно, захотите обрабатывать много акций и много раз, поэтому вам может быть лучше сделать что-то вроде этого:

stocks = c("4 Google", "5Amazon")
strings = stri_replace_all_fixed(strings,stocks,'stock')
strings = stri_replace_all_regex(strings,'\b[0-9]+sec\b',time)

\b[0-9]+sec\b является обычным значение выражения:

  1. граница слова
  2. один или несколько цифровых символов
  3. "se c"
  4. граница слова

Это будет включать строки, такие как «2se c», но исключить такие, как «1sector»

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