使用r(dplyr)汇总类别和日期

时间:2019-03-12 17:05:41

标签: r dplyr

我有一个按ID,类别和日期跟踪每日收入的数据集:

id       cat        date     daily_rev
111       A        3/09/19     $10
111       A        3/10/19     $15
111       A        3/11/19     $40
222       A        3/09/19     $100
222       A        3/10/19     $150
222       A        3/11/19     $50
333       B        3/09/19     $45
333       B        3/10/19     $10
333       B        3/11/19     $30

我想操纵数据以按类别对所有日期求和:

cat     tot_daily_rev
 A          $365
 B          $85

当我使用此代码时:

X <- data %>% group_by(cat) %>% mutate(tot_daily_rev = sum(daily_rev))

我得到一个数据框,它的tot_daily_rev列是数据集中每一行的总和:

id       cat        date     daily_rev     tot_daily_rev
111       A        3/09/19     $10              $450
111       A        3/10/19     $15              $450
111       A        3/11/19     $40              $450
222       A        3/09/19     $100             $450
222       A        3/10/19     $150             $450
222       A        3/11/19     $50              $450
333       B        3/09/19     $45              $450
333       B        3/10/19     $10              $450
333       B        3/11/19     $30              $450

我已经引用了这篇文章:How to sum a variable by group?,但是它不能解决我的问题。

-

更新

Why does summarize or mutate not work with group_by when I load `plyr` after `dplyr`?解决了同一问题!我完全没有意识到这是函数/库的问题,所以我没有想到要寻找为什么摘要和变异行为不符合我的预期。

1 个答案:

答案 0 :(得分:0)

使用mutate时不是group_by。在使用group_by之后,它现在变成了group_by对象,因此您必须使用summarize

X <- data %>% 
  group_by(cat) %>%
  summarize(tot_daily_rev = sum(daily_rev))