我正在尝试基于分组因子来计算“滚动”摘要统计信息。是否存在基于(例如)有序因子的(重叠)组进行处理的好方法?
例如,假设我要按组计算val
的总和
df <- data.frame(grp = c("a", "a", "b", "b", "c", "c", "c"),
val = rnorm(7))
对于基于
grp
的组,这很简单:df %>% group_by(grp) %>% summarise(total = sum(val))
# result:
grp total
1 a 1.6388
2 b 0.7421
3 c 1.1707
但是,我要做的是为连续的组(“a”和“b”,然后是“b”和“c”,等等)计算“滚动”总和。所需的输出将是这样的:
grp1 grp2 total
1 a b 1.6388
2 b c 0.7421
我在dplyr中无法执行此操作。特别是,我似乎无法弄清楚如何获得“重叠”组-上例中的“b”行应以两个输出组结尾。
最佳答案
试试lag
:
df %>%
group_by(grp) %>%
arrange(grp) %>%
summarise(total = sum(val)) %>%
mutate(grp1 = lag(grp), grp2 = grp, total = total + lag(total)) %>%
select(grp1, grp2, total) %>%
na.omit