根据月份对行子集执行函数?

时间:2018-03-14 13:27:48

标签: r

我有这样的数据集:

Company Month   Price   Quantity
A   1/1/2014    46  4788
B   1/1/2014    43  6242
C   1/1/2014    50  5432
D   1/1/2014    26  4153
A   2/1/2014    21  5301
B   2/1/2014    46  2706
C   2/1/2014    33  9803
D   2/1/2014    42  9208
A   3/1/2014    45  6309
B   3/1/2014    30  9457
C   3/1/2014    20  6050
D   3/1/2014    16  3151

我正在尝试执行一个简单的函数sum(price * quantity),该函数在数据集中每个月求和,并将结果发送到新的数据框。

结果如下:

Month   Result
1/1/2014    868232
2/1/2014    946032
3/1/2014    739031

我尝试了aggregate()功能,但我没有运气。这和subset()函数一样简单吗?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

按照'月'进行分组后,获取' Price',' Quantity'的产品。和sum

library(dplyr)
df1 %>%
  group_by(Month) %>% 
  summarise(Result = sum(Price*Quantity))
# A tibble: 3 x 2
#  Month    Result
#  <chr>     <int>
#1 1/1/2014 868232
#2 2/1/2014 946032
#3 3/1/2014 739031

或使用aggregate

aggregate(cbind(Result = Price*Quantity) ~ Month, df1, FUN = sum)
#      Month Result
#1 1/1/2014 868232
#2 2/1/2014 946032
#3 3/1/2014 739031

答案 1 :(得分:0)

dplyrlubridate包可让您按月分组,然后汇总:

library(dplyr)
library(lubridate)
sum_monthly <- df %>% 
  mutate(Month = mdy(Month)) %>% # Converting month to date format
  group_by(month(Month)) %>% 
  summarise(Result = sum(Quantity * Price))