应用cumsum

时间:2018-05-07 23:03:30

标签: r dplyr

如此处的众多问题所述,我应该能够获取data.frame,对其进行分组,按日期排序,然后应用cumsum,以获得每个分组的累积总和。

相反,dplyr 0.8.0,我得到忽略分组的累积总和。

示例代码:

data.frame(
  cat = sample(c("a", "b", "c"), size = 1000, replace = T),
  date = sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 1000, replace=T)
) %>%
  mutate(
    x = 1
  ) %>% 
  arrange(date) %>%
  group_by(cat) %>%
  mutate(x = cumsum(x)) %>%
  tail()

现在,对于每个群组,我预计最后几行的x等于300左右。

相反,我得到:

# A tibble: 6 x 3
# Groups:   cat [2]
  cat   date           x
  <chr> <date>     <dbl>
1 a     1999-12-31   995
2 a     1999-12-31   996
3 c     2000-01-01   997
4 a     2000-01-01   998
5 c     2000-01-01   999
6 a     2000-01-01  1000

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我猜这是在dplyr之后加载plyr时的经典问题,与你的dplyr版本无关。例如:

tmp1<- data.frame(cat = sample(c("a", "b", "c"), size = 1000, replace = T),
date = sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 1000, replace=T)) %>%    mutate(x = 1)

看到

之间的区别
tmp1 %>% 
arrange(date) %>%
group_by(cat) %>%
plyr::mutate(x = cumsum(x)) %>%
tail()

tmp1 %>% 
  arrange(date) %>%
  group_by(cat) %>%
  dplyr::mutate(x = cumsum(x)) %>%
  tail()

plyr的变异不理解分组。

您可以使用search()

验证这是否是问题