Вот tidyverse
возможность
library(tidyverse)
df %>%
mutate(grp = rep(1:(nrow(.)/2), each = 2)) %>%
group_by(grp) %>%
mutate(
Age_Group = paste(Age_Group, collapse = ":"),
Age_Group = gsub("-\\d+:\\d+", "", Age_Group)) %>%
mutate(Population = sum(Population)) %>%
slice(1) %>%
ungroup() %>%
select(-grp)
## A tibble: 5 x 3
# Age_Group Region Population
# <chr> <fct> <int>
#1 0-9 ENGLAND 6882327
#2 10-19 ENGLAND 6286768
#3 20-29 ENGLAND 7357765
#4 30-39 ENGLAND 7400043
#5 40-49 ENGLAND 7292866
Объяснение: Как упоминалось @DavidArenburg, мы группируем записи по двум строкам, создаем новую метку Age_Group
, комбинируя Age_Group
записей из каждых двух строк, а затем агрегируем Population
записей. Большая часть работы связана с созданием новых Age_Group
ярлыков.