Одна dplyr
возможность может быть:
df %>%
group_by(group = gl(n()/2, 2)) %>%
mutate_at(vars(starts_with("v")), sum) %>%
mutate_at(vars(starts_with("f")), toString) %>%
summarise_all(first) %>%
ungroup() %>%
select(-group)
v1 v2 v3 v4 v5 fa fb fc
<int> <int> <int> <int> <int> <chr> <chr> <chr>
1 2 4 1 2 3 d, l e, k f, s
Здесь он присваивает каждые две строки одной и той же группе, суммирует переменные, начиная с v
, и объединяет переменные, начиная с f
.
Или то же самое в зависимости от класса переменной:
df %>%
group_by(group = gl(n()/2, 2)) %>%
mutate_if(is.numeric, sum) %>%
mutate_if(is.character, toString) %>%
summarise_all(first) %>%
ungroup() %>%
select(-group)