如何按两个变量分组并基于 cumsum 创建一个新变量?

How can I group by two variables and create a new variable based on cumsum?

我正在处理基于酒店评论的数据集。我创建了一个子集(440880 行)如下:

 df2
 Hotel_ID  Review_date  Negative_Rev       Positive_Rev   Negative  Positive
        1   2015/08/20     bad staff   comfortable room          1         1
        1   2015/08/30   No Negative         good staff          0         1
        2   2015/09/24      no staff        No Positive          1         1
        2   2016/02/03  No Breakfast   near city centre          1         1
        2   2016/03/22   No Negative        No Positive          0         0

其中 NegativePositive 是基于 Negative_RevPositive_Rev (x = 0 if No Negative or No Positive) 的变量。 我想按 Hotel_IDReview_Datedf2 进行分组,并创建两个新的列,名为 Daily_NegativeDaily_Positive,它们分别来自 cumsum 函数 NegativePositive。 例如,我试过这个:

> df$Daily_Positive <- ddply(df, .(Review_Date, Hotel_ID), transform, Daily_Positive = cumsum(Positive))
library(dplyr)   
df2 <- df2 %>% group_by(Hotel_ID,Review_date) %>%
               summarise(Daily_Negative = sum(Negative),
                         Daily_Positive = sum(Positive)) %>% 
               ungroup()

这是使用 data.table 包的另一种解决方案:

library(data.table)
df2[, .(Daily_Negative=sum(Negative), Daily_Positive=sum(Positive)), by=.(Hotel_ID, Review_date)]