0

2 つの変数に対して 'ddply' を実行するのは、単純なコマンドのように思えますが、ひどい時間を過ごしています。

サンプルデータ (df):

Brand    Day     Rev     RVP              
  A      1        2535.00  195.00 
  B      1        1785.45  43.55 
  C      1        1730.87  32.66 
  A      2        920.00   230.00
  B      2        248.22   48.99 
  C      3        16466.00 189.00      
  A      1        2535.00  195.00 
  B      3        1785.45  43.55 
  C      3        1730.87  32.66 
  A      4        920.00   230.00
  B      5        248.22   48.99 
  C      4        16466.00 189.00

私はコマンドを使用しています:

df2<-ddply(df, .(Brand, Day), summarize, Rev=mean(Rev), RVP=sum(RVP))

私のデータフレームには約 2600 の観測値があり、45 レベルの「ブランド」と最大 300 レベルの「日」(「difftime」を使用してコード化) があります。

単純に「日」でグループ化する場合は「ddply」を簡単に使用できますが、「ブランド」でグループ化しようとすると、コンピューターがフリーズします。

考え?

4

1 に答える 1

3

、、、、およびのヘルプページを読み、それぞれaggregateが期待する引数のタイプと引数の名前にも細心の注意を払う必要があります。次に、すべての例またはを実行します。@hadleyがpkg:plyrとreshape / reshape2で行った主なことは、ある程度の規則性を課すことでしたが、速度が犠牲になりました。特に関数を使おうとしたときだけでなく、繰り返し使用していることを忘れたときも、彼がそれを行った理由を理解しています。リストが必要で、グループ化変数に必要なFUN=引数ラベルが必要です。 ...それらはすべて多少異なるので。byavetapplydemo()base::reshapeinteraction()

> aggregate(df[3:4], df[1:2], function(d) mean(d) )
   Brand Day       Rev    RVP
1      A   1  2535.000 195.00
2      B   1  1785.450  43.55
3      C   1  1730.870  32.66
4      A   2   920.000 230.00
5      B   2   248.220  48.99
6      B   3  1785.450  43.55
7      C   3  9098.435 110.83
8      A   4   920.000 230.00
9      C   4 16466.000 189.00
10     B   5   248.220  48.99
于 2012-12-14T02:03:21.467 に答える