#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!