Расщепление строк разной длины - PullRequest
1 голос
/ 01 ноября 2019

У меня есть набор данных, который содержит имена членов Конгресса, за которыми следуют номера их штатов и округов. В идеале я хотел бы разбить строку на новые столбцы, содержащие имя представителя, штат и район #. Я могу успешно разделить одну, но так как строки имеют разную длину, они не будут соответствовать другим строкам. Ниже приведен воспроизводимый образец.

current_data <- tibble(
 names = c("Ralph Abraham La. 5", "Robert B. Aderholt Ala. 4", "Rick W. Allen Ga. 12", "Mark Amodei Nev. 2",
           "Kelly Armstrong N.D. 0", "Jodey Arrington Tex. 19"),
 party = c("R", "R", "R","R", "R", "R"),
 vote = c("N","N","N","N","N","N"))

Вот пример того, как я хотел бы, чтобы он выглядел.

desired_data <- tibble(
 names = c("Ralph Abraham", "Robert B. Aderholt", "Rick W. Allen", "Mark Amodei",
        "Kelly Armstrong", "Jodey Arrington"),
 state = c("La.", "Ala.", "Ga.", "Nev.", "N.D.", "Tex."),
 district_num = c(5,4,12,2,0,19),
 party = c("R", "R", "R","R", "R", "R"),
 vote = c("N","N","N","N","N","N"))

Надеюсь, вы все мне поможете. Спасибо!

1 Ответ

1 голос
/ 01 ноября 2019
current_data%>%
   separate(names,c("names","state","district"),"\\s(?=\\S+\\s+\\d)|\\s+(?=\\d)")

# A tibble: 6 x 5
  names              state district party vote 
  <chr>              <chr> <chr>    <chr> <chr>
1 Ralph Abraham      La.   5        R     N    
2 Robert B. Aderholt Ala.  4        R     N    
3 Rick W. Allen      Ga.   12       R     N    
4 Mark Amodei        Nev.  2        R     N    
5 Kelly Armstrong    N.D.  0        R     N    
6 Jodey Arrington    Tex.  19       R     N    
...