0

我在两个变量上运行“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' 编码)。

简单地按“Day”分组时,我可以轻松使用“ddply”,但是当我也尝试按“Brand”分组时,我的电脑死机了。

想法?

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 回答