ddply和dplyr为同一操作生成不同尺寸的输出

时间:2015-03-03 16:20:16

标签: r

我目前正在阅读Applied Predictive Modeling(由Kuhn和Johnson撰写),并通过一个案例研究,使用混凝土混合比例数据来建立模型。

可以使用AppliedPredictiveModelling库

访问此数据
library(AppliedPredictiveModelling)
data(concrete)
str(mixtures)

选择CompressiveStrength作为因变量,在继续建模过程之前,使用下面的代码平均复制的混合物(即具有相同CompressiveStrength的混合物)。

averaged <- ddply(mixtures, 
              .(Cement, BlastFurnaceSlag, FlyAsh, Water,
                Superplasticizer, CoarseAggregate,
                FineAggregate, Age),
              function(x) c(CompressiveStrength = 
                                mean(x$CompressiveStrength)))

我通常更喜欢使用dplyr进行数据操作,并且发现它比上面的代码更直观。所以,我运行以下代码来实现相同的目标

averaged1 <- mixtures %>%
            group_by(CompressiveStrength) %>%
            summarise_each(funs(mean), Cement, BlastFurnaceSlag, FlyAsh, Water,
                           Superplasticizer, CoarseAggregate, FineAggregate, 
                           Age)

我期望使用两种方法(averaged和averaged1)生成的数据框具有相同的尺寸,但它们不会。

> dim(averaged)
[1] 992   9

> dim(averaged1)
[1] 845   9

任何人都可以识别并解释上述方法的差异,从而导致不同维度的输出吗?

0 个答案:

没有答案