Раздельное содержание поля - PullRequest
0 голосов
/ 15 ноября 2018

Я уверен, что это очень просто, и я думаю, что это случай использования отделить и собрать.

У меня есть одно поле в фрейме данных, список авторов, отредактированный экспорт опубликованного поиска.Содержит авторов публикаций.Очевидно, что он может содержать либо одного автора, либо совместную работу авторов.

Например, это просто набор доступных опций:

Author
Drijgers RL, Verhey FR, Leentjens AF, Kahler S, Aalten P.

Я хотел бы создать один список ВСЕХ авторов, чтобы у меня было что-то вроде

Author
Drijgers RL
Verhey FR
Leentjens AF
Kahler S
Aalten P

Как мне это сделать?Я думал, что это будет что-то вроде

authSpread<-authorlist%>%separate(Author,sep =",",extra ="drop")

Но это не работает.Если я вставлю в = "NA", я получу только первых авторов, перечисленных в одном столбце.То, что я хотел бы сделать, это скопировать текст в функцию столбцов в Excel, где вы можете указать символ для разделения, а содержимое ячейки будет преобразовано в новые ячейки.А затем объединить их в один столбец.Я не знаю максимального числа авторов и, следовательно, не знаю количество столбцов, которые нужно разделить (или как их пометить) программно.

Редактировать: уточнение Не знаю, хочу ли ясделать длинный фрейм данных широким И затем собрать - потому что я не знаю, сколько полей будет сгенерировано.Это разумная вещь?Я думаю, что я мог бы записать вывод отдельного символа "," в список, а затем записать содержимое этого списка в виде отдельного фрейма данных.Это звучит эффективнее?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы ищете separate_rows.

Введите:

df <- data.frame(authors = c("Drijgers RL, Verhey FR, Leentjens AF, Köhler S, Aalten P."))

                                                     authors
1 Drijgers RL, Verhey FR, Leentjens AF, Köhler S, Aalten P.

Функция:

library(tidyverse)

df %>% separate_rows(authors, sep = ", ")

Выход:

       authors
1  Drijgers RL
2    Verhey FR
3 Leentjens AF
4    Köhler S
5    Aalten P.

Вы можете сохранить их в виде списка:

authors_list <- df %>% separate_rows(authors, sep = ", ") %>% pull(authors)

Выход:

[1] "Drijgers RL"  "Verhey FR"    "Leentjens AF" "Köhler S"    "Aalten P."   

Если у вас есть авторы нескольких статей в вашем списке и вы хотите только уникальные события, просто добавьте unique() в конце:

authors_list <- df %>% separate_rows(authors, sep = ", ") %>% pull(authors) %>% unique()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...