Есть ли элегантный способ суммировать данные по различным перекрывающимся (не разъединенным) группам и присоединяться к ним?
Я хотел бы сделать следующее:
library(dplyr)
x <- data.frame(key=1:4, values=1:4)
x %>% group_by(key)
%>% summarize(type=1, values=sum(values)) -> tmp1
x %>% mutate(key=key%%2)
%>% group_by(key)
%>% summarize(type=2, values=sum(values)) -> tmp2
rbind(tmp1, tmp2)
# A tibble: 6 x 3
key type values
<dbl> <dbl> <int>
1 1 1 1
2 2 1 2
3 3 1 3
4 4 1 4
5 0 2 6
6 1 2 4
Возможно ли это сделать без создания объектов tmp1
и tmp2
?
РЕДАКТИРОВАТЬ: Я ищу решение, которое удобно, если есть много (может быть, 1e6) перекрывающихся групп.
Например, другая группа может быть:
x %>% mutate(key=key%%3)
%>% group_by(key)
%>% summarize(type=3, values=sum(values)) -> tmp3
Могу ли ясуммировать по множеству групп и объединить результаты, как показано выше без переписывания кода для каждой группировки?