Вот еще один вариант использования zoo
и dplyr
.
1) Получить имена сторон.
parties <- sub(pattern = "Total\\s(.+):\\s\\d+",
replacement = "\\1",
x = table1_df$deputado[grepl("Total", x = table1_df$deputado)])
2) Добавить parties
в качестве нового столбцаи нести последнее замечание для слова, так как в parties[match(table1_df$deputado, parties)]
есть много NA
с.
table1_df$new_col <- zoo::na.locf(parties[match(table1_df$deputado, parties)])
3) Удалите ненужные строки.
library(dplyr)
table1_df <- table1_df %>%
group_by(new_col) %>%
slice(2:(n()-1))
table1_df
# A tibble: 324 x 4
# Groups: new_col [24]
# deputado uf voto new_col
# <chr> <chr> <chr> <chr>
# 1 Adalberto Cavalcanti PE Não Avante
# 2 Cabo Sabino CE Abstenção Avante
# 3 Silvio Costa PE Sim Avante
# 4 Alan Rick AC Sim DEM
# 5 Alberto Fraga DF Não DEM
# 6 Alexandre Leite SP Sim DEM
# 7 Arthur Oliveira Maia BA Sim DEM
# 8 Carlos Melles MG Sim DEM
# 9 Efraim Filho PB Não DEM
#10 Eli Corrêa Filho SP Sim DEM
# ... with 314 more rows