我希望开始使用dplyr代替ddply,但我不太明白它是如何工作的(我已经阅读了文档)。
例如,为什么当我尝试mutate()时,"group_by"函数不能像预期那样工作?
看一下mtcars:
library(car)
假设我创建一个数据框,它是按"cyl"和"gear"分组的mtcars摘要:
df1 <- mtcars %.%
group_by(cyl, gear) %.%
summarise(
newvar = sum(wt)
)
接下来我想进一步总结这个数据框。使用ddply方法很简单,但是当我尝试使用dplyr时,并没有真正地“按组分组”:
df2 <- df1 %.%
group_by(cyl) %.%
mutate(
newvar2 = newvar + 5
)
仍然产生未分组的输出:
cyl gear newvar newvar2
1 6 3 6.675 11.675
2 4 4 19.025 24.025
3 6 4 12.375 17.375
4 6 5 2.770 7.770
5 4 3 2.465 7.465
6 8 3 49.249 54.249
7 4 5 3.653 8.653
8 8 5 6.740 11.740
我的语法有问题吗?
编辑:
如果我要用plyr和ddply来做这件事:
df1 <- ddply(mtcars, .(cyl, gear), summarise, newvar = sum(wt))
然后获取第二个数据框:
df2 <- ddply(df1, .(cyl), summarise, newvar2 = sum(newvar) + 5)
但是使用相同的方法,在dplyr中 用 sum(newvar) + 5作为 summarise()函数的参数并不能起作用...
ddply
的等效plyr
代码? - dickoamutate
和summarise
的概念。 - flodel