Как перевернуть строки в датафрейме - PullRequest
0 голосов
/ 28 мая 2019

У меня есть name, что-то вроде Робин Брюн или Виктор из Лоо Эти имена находятся в dataframe в моем сеансе.Мне нужно изменить эти имена на:

<<em> фамилия, имя, отчество (имена) >,

, чтобы они включались.Но я не знаю, как это сделать.

Я знаю, что могу использовать такие вещи, как separate() или map() с PURR (из tidyverse).

Данные:

  ~nr,            ~name,        ~prodno,
  2019001,       "Piet de Boer", "lux_zwez",
  2019002,       "Elly Hamstra",  "zuv_vla",
  2019003, "Sue Ellen Schilder",  "zuv_vla",
  2019004,      "Truus Janssen", "zuv_vmlk",
  2019005,  "Evelijne de Vries", "lux_zwez",
  2019006,     "Berend Boersma", "lux_gras",
  2019007,   "Marius van Asten",  "zuv_vla",
  2019008,     "Corneel Jansen", "lux_gras",
  2019009,     "Joke Timmerman",  "zuv_vla",
  2019010, "Jan Willem de Jong", "lux_zwez",
  2019011,   "Frederik Janssen", "zuv_vmlk",
  2019012,   "Antonia de Jongh", "zuv_vmlk",
  2019013,   "Lena van der Loo",  "zuv_qrk",
  2019014,   "Johanna Haanstra", "lux_gras"

Ответы [ 2 ]

4 голосов
/ 28 мая 2019

Мы можем попытаться использовать sub здесь:

names <- c("Robin the Bruyne", "Victor from the Loo")
output <- sub("^(.*) ([A-Z][a-z]+)$", "\\2, \\1", names)
output

[1] "Bruyne, Robin the"    "Loo, Victor from the"

Этот подход использует следующий шаблон:

^(.*)          capture everything from the start until the last space
([A-Z][a-z]+)$ capture the last name, which starts with a capital

Затем мы заменяем фамилию и имя / отчествопоменялись местами, разделенные запятой.

0 голосов
/ 02 июня 2019

Если я вас правильно понял, это должно сработать.

dat = tibble::tribble(
  ~nr,            ~name,        ~prodno,
  2019001,       "Piet de Boer", "lux_zwez",
  2019002,       "Elly Hamstra",  "zuv_vla",
  2019003, "Sue Ellen Schilder",  "zuv_vla",
  2019004,      "Truus Janssen", "zuv_vmlk",
  2019005,  "Evelijne de Vries", "lux_zwez",
  2019006,     "Berend Boersma", "lux_gras",
  2019007,   "Marius van Asten",  "zuv_vla",
  2019008,     "Corneel Jansen", "lux_gras",
  2019009,     "Joke Timmerman",  "zuv_vla",
  2019010, "Jan Willem de Jong", "lux_zwez",
  2019011,   "Frederik Janssen", "zuv_vmlk",
  2019012,   "Antonia de Jongh", "zuv_vmlk",
  2019013,   "Lena van der Loo",  "zuv_qrk",
  2019014,   "Johanna Haanstra", "lux_gras"
)

library(magrittr)
dat %>% dplyr::mutate(
  lastname = stringr::str_extract(name,"(?<=[:blank:])[:alnum:]+$"),
  firstname = stringr::str_extract(name,".*(?=[:blank:])"),
  name = paste(lastname,firstname,sep = ", ")
) %>% dplyr::select(-firstname,-lastname)
#> # A tibble: 14 x 3
#>         nr name                prodno  
#>      <dbl> <chr>               <chr>   
#>  1 2019001 Boer, Piet de       lux_zwez
#>  2 2019002 Hamstra, Elly       zuv_vla 
#>  3 2019003 Schilder, Sue Ellen zuv_vla 
#>  4 2019004 Janssen, Truus      zuv_vmlk
#>  5 2019005 Vries, Evelijne de  lux_zwez
#>  6 2019006 Boersma, Berend     lux_gras
#>  7 2019007 Asten, Marius van   zuv_vla 
#>  8 2019008 Jansen, Corneel     lux_gras
#>  9 2019009 Timmerman, Joke     zuv_vla 
#> 10 2019010 Jong, Jan Willem de lux_zwez
#> 11 2019011 Janssen, Frederik   zuv_vmlk
#> 12 2019012 Jongh, Antonia de   zuv_vmlk
#> 13 2019013 Loo, Lena van der   zuv_qrk 
#> 14 2019014 Haanstra, Johanna   lux_gras

Создано в 2019-06-02 пакетом представ. (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...