使用ddply汇总不同时间段和变量的变量

时间:2014-06-10 15:39:53

标签: r plyr summarization

我试图总结客户的销售报告,并获得不同时期的总销售额:

   Client   Q   Sales   Date
   A    2   30  01/01/2014
   A    3   24  02/01/2014
   A    1   10  03/01/2014
   B    4   10  01/01/2014
   B    1   20  02/01/2014
   B    3   30  03/01/2014

我可以使用ddply来总结客户:

 rapport <- ddply(df, CLIENT, summarise, 
           Q = sum(Q), 
           Sales = sum(Sales) )

   Client   Q   Sales   
   A        6   64  
   B        7   60

我想在03/01/2014

日期添加额外的销售列
Client   Q  Sales  Sales03/01/2014
   A     6  64      10
   B     7  60      30

2 个答案:

答案 0 :(得分:0)

DF <- read.table(text="   Client   Q   Sales   Date
   A    2   30  01/01/2014
   A    3   24  02/01/2014
   A    1   10  03/01/2014
   B    4   10  01/01/2014
   B    1   20  02/01/2014
   B    3   30  03/01/2014", header=TRUE)

library(plyr)
ddply(DF, .(Client), summarise, 
      Q = sum(Q), 
      `Sales03/01/2014` = Sales[Date=="03/01/2014"],
      Sales = sum(Sales))

#  Client Q Sales03/01/2014 Sales
#1      A 6              10    64
#2      B 8              30    60

请注意,如果您希望输出的名称与输入Sales相同,则评估顺序非常重要。此外,最好避免使用无效语法的名称。

答案 1 :(得分:0)

您还可以使用dplyr获得相同的结果:

library(dplyr)

DF %>%
  group_by(Client) %>%
  summarise(SumOfQ = sum(Q) 
            `Sales03/01/2014` = Sales[Date=="03/01/2014"],
            SumOfSales = sum(Sales)) 

dplyr对于示例案例来说速度较慢,但​​对于大型数据帧来说要快得多。