Разделяйте значение в поле за символом, создавайте несколько столбцов справа в зависимости от количества возможных разбиений - PullRequest
0 голосов
/ 15 ноября 2018

Я задал ряд вопросов.

Отдельное содержимое поля

Отдельная переменная в поле по символам.

Который, я думаю, содержал несколько вопросов на одну и ту же тему.

У меня были отличные ответы о том, как использовать Отдельные_строки, а затем отличный ответ о том, как отделить первого и последнего авторов от вектора символов.

Что я хотел бы знать сейчаспоследний бит:

В этом ответе Разделение столбца по разделителю справа налево в R

число столбцов известно.Как мне сказать «разбить эту строку на запятые и бросить их в неизвестное количество столбцов на основе количества имен в списке авторов справа от исходного поля»?

, чтобы каждый автор сталзначение в отдельном поле.Сначала я думал, что это будет разыгрываться / распространяться.НО!

Хотя этот пример я использовал: Автор

Дриджерс Р.Л., Верхей Ф.Р., Леентженс А.Ф., Калер С., Аалтен П.

во многих случаяхчисло авторов на бумаге (не включая и др.) будет> 1 и может быть где-то около 30 максимум.

Итак.Последний вопрос этой саги из трех частей ... Как мне выделить всех авторов в новом поле, и если бы я мог озаглавить новые поля чем-то вроде первого автора, второго автора и т. Д. И т. Д. До последнего автора.

Это разумно / ясно?

ценю, что есть два или три человека, которые очень быстро помогают.

1 Ответ

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

Вы можете разбить столбец вашего автора на список с помощью str_split, а затем использовать unnest, чтобы получить длинный формат данных с новым автором в каждой строке.Затем вы используете spread и столбец ID, чтобы получить данные в широкоформатном формате.

library(dplyr)
library(tidyr)
df <- data.frame(publication = c("pub1","pub2","pub3"),author = c("Drijgers RL, Verhey FR, Leentjens AF, Kahler S, Aalten P","test author","test arthur, another author"))
df
#  publication                                                   author
#1        pub1 Drijgers RL, Verhey FR, Leentjens AF, Kahler S, Aalten P
#2        pub2                                              test author
#3        pub3                              test arthur, another author


df %>% group_by(publication) %>% mutate(author = str_split(author,", ")) %>% unnest %>% mutate(ID = paste0("author_",row_number())) %>% spread(ID,author)
# A tibble: 3 x 6
# Groups:   publication [3]
#  publication author_1    author_2       author_3     author_4 author_5
#  <fct>       <chr>       <chr>          <chr>        <chr>    <chr>   
#1 pub1        Drijgers RL Verhey FR      Leentjens AF Kahler S Aalten P
#2 pub2        test author NA             NA           NA       NA      
#3 pub3        test arthur another author NA           NA       NA  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...