我试图计算"滚动"基于分组因子的摘要统计。是否有一种很好的方法来处理(重叠)基于(例如)有序因子的组?
例如,假设我想按组计算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
然而,我想要做的是计算&#34;滚动&#34;连续组的总和(&#34; a&#34;&amp;&#34; b&#34;然后&#34; b&#34;&amp;&#34; c&#34;等)。期望的输出将是这样的:
grp1 grp2 total
1 a b 1.6388
2 b c 0.7421
我在dplyr中遇到此问题。特别是,我似乎无法弄清楚如何重叠&#34;团体 - &#34; b&#34;上例中的行应该以两个输出组结束。
答案 0 :(得分:6)
尝试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