如何按两个变量分组并基于 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
其中 Negative
和 Positive
是基于 Negative_Rev
和 Positive_Rev
(x = 0 if No Negative or No Positive
) 的变量。
我想按 Hotel_ID
和 Review_Date
对 df2
进行分组,并创建两个新的列,名为 Daily_Negative
和 Daily_Positive
,它们分别来自 cumsum
函数 Negative
和 Positive
。
例如,我试过这个:
> 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)]
我正在处理基于酒店评论的数据集。我创建了一个子集(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
其中 Negative
和 Positive
是基于 Negative_Rev
和 Positive_Rev
(x = 0 if No Negative or No Positive
) 的变量。
我想按 Hotel_ID
和 Review_Date
对 df2
进行分组,并创建两个新的列,名为 Daily_Negative
和 Daily_Positive
,它们分别来自 cumsum
函数 Negative
和 Positive
。
例如,我试过这个:
> 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)]