dplyr中的重叠组

时间:2014-06-13 01:52:55

标签: r dplyr

我试图计算"滚动"基于分组因子的摘要统计。是否有一种很好的方法来处理(重叠)基于(例如)有序因子的组?

例如,假设我想按组计算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;上例中的行应该以两个输出组结束。

1 个答案:

答案 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