0

クライアントごとの売上レポートを要約し、さまざまな期間の総売上を取得しようとしています。

   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

2014 年 3 月 1 日の日付のみの売上を示す列を追加したいと考えています。

Client   Q  Sales  Sales03/01/2014
   A     6  64      10
   B     7  60      30
4

2 に答える 2

0

以下を使用しても同じ結果が得られますdplyr

library(dplyr)

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

dplyr例の場合は遅くなりますが、大きなデータ フレームの場合ははるかに高速です。

于 2014-06-10T17:47:48.710 に答える
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

output に input と同じ名前が必要な場合は、ここで評価の順序が重要であることに注意してくださいSales。また、有効な構文ではない名前は避けるのが最善です。

于 2014-06-10T15:48:39.447 に答える