Использование separate_rows() и tidyverse для удаления знаков препинания и объединения терминов

#r #dplyr #tidyverse #tidyr

#r #dplyr #tidyverse #tidyr

Вопрос:

У меня есть, как я думаю, несложная проблема, но, похоже, я не могу найти поток, который обращается separate_rows к использованию специальной пунктуации sep = . У меня есть большой фрейм данных, в котором я использовал интеллектуальный анализ текста для извлечения терминов data science в каждом наблюдении (N = 2000). Затем я включил эти данные в качестве добавляемого столбца в качестве решений для обработки данных, ds_solutions . Я хотел бы разделить эти термины, а затем использовать group_by и count = посмотреть, есть ли какие-либо тенденции / шаблоны для разных категорий.

Однако, используя sep = "," , я не могу удалить другие символы [ и '"' , так что у меня есть случаи, когда запись читается как "['forecasting'" , а не просто forecasting . Это то, что я могу сделать перед разделением строк? Или после? Заранее спасибо за ваши мысли!

 Project <- c("A", "B", "C")
Stage <- c("Pilot", "Pilot", "Idea")
ds_solutions <- c("['image recognition', 'ai', 'forecast', 'machine learning', 'machine learning model']", 
                  "['clustering', 'sentiment analysis', 'nlp', 'time series']", 
                  "['classifier', 'cluster analysis', 'classification', 'scraping', 'databases']")
sample <- data.frame(Project, Stage, ds_solutions)

Project Stage  ds_solutions
A       Pilot  ['image recognition', 'ai', 'forecast', 'machine learning', 'machine learning model']
B       Pilot  ['clustering', 'sentiment analysis', 'nlp', 'time series']
C       Idea   ['classifier', 'cluster analysis', 'classification', 'scraping', 'databases']

  

Ответ №1:

Работает ли это?

 library(dplyr)
library(tidyr)

sample %>% 
  mutate(ds_solutions = substr(ds_solutions, 3L, nchar(ds_solutions) - 2L)) %>% 
  separate_rows(ds_solutions, sep = "['"],\s*['"]")
  

Комментарии:

1. Привет, @ekoam — это так! Выходные данные по-прежнему включают каждый термин, заключенный в кавычки (например, «линейная регрессия», «регрессия», «байесовская» и т. Д.). Я думаю, что смогу удалить это, как только включу в csv?

2. Привет @bjk127, я только что обновил ответ. Как насчет этого?

3. Это так! Спасибо за информацию. Не уверен, что я когда-либо понял бы это регулярное выражение в одиночку.

4. Привет @bjk127, рад это знать. Если этот или любой другой ответ решил ваш вопрос, пожалуйста, подумайте о том, чтобы принять его , установив флажок. Это указывает более широкому сообществу, что вы нашли решение, и дает некоторую репутацию как ответчику, так и вам. Это не обязательно делать.

5. Определенно. Спасибо @ekoam!