我目前正在阅读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
任何人都可以识别并解释上述方法的差异,从而导致不同维度的输出吗?