Как использовать tidyr в R для разделения строкового столбца на несколько других столбцов - PullRequest
3 голосов
/ 16 июня 2020

Итак, я использую tidyr в R и пытаюсь разделить данные в столбце 'pub_author' (прилагается ниже) на 3 отдельных столбца: 'website_title', 'year' и 'author'. Я пробовал использовать функцию own () , выполняющую separate('pub_author',c('website_title','year', 'author'),'-'), но поскольку R читает каждый '-' индивидуально, он возвращает только первые три слова. Кто-нибудь знает, как сгруппировать слова для названия и автора, чтобы они отображались в соответствующем столбце или любым другим способом?

pub author column

1 Ответ

6 голосов
/ 16 июня 2020

С separate мы можем передавать поисковые запросы регулярного выражения. В этом случае будет соответствовать -, которое предшествует 4 di git, или -, которое следует за 4 di git

library(tidyr)
separate(df1, pub_author, into = c('website_title','year', 'author'), 
     "-(?=\\d{4})|(?<=\\d{4})-")
#        website_title year        author
#1       nfl-draft-geek 2018 justin-miller
#2                  cbs 2019   pete-prisco
#3            sb-nation 2020     dan-kadar
#4    football-fan-spot 2019 steven-lourie
#5             fanspeak 2018       william
#6 acme-packing-company 2020  shawn-wagner

data

df1 <- structure(list(pub_author = c("nfl-draft-geek-2018-justin-miller", 
"cbs-2019-pete-prisco", "sb-nation-2020-dan-kadar", 
  "football-fan-spot-2019-steven-lourie", 
"fanspeak-2018-william", "acme-packing-company-2020-shawn-wagner"
)), class = "data.frame", row.names = c(NA, -6L))
...