我希望总结与数据集包中的ToothGrowth数据类似的数据。
我想要的输出如下:
supp len half one two
1 OJ 619.9 132.3 227.0 260.6
2 VC 508.9 79.8 167.7 261.4
这是按剂量和补充类型分开的长度之和。我的同事使用以下代码使用R版本2.15.1和plyr_1.7.1获取此输出。
library(datasets)
x <- ToothGrowth
test <- ddply(x,c("supp"),summarize,
len = sum(len,na.rm=TRUE),
half = sum(len[dose==0.5],na.rm=TRUE),
one = sum(len[dose==1],na.rm=TRUE),
two = sum(len[dose==2],na.rm=TRUE))
ToothGrowth数据中没有NA,但真实数据集中有。
我得到以下输出R版本3.0.0和plyr_1.8。如果有用,我可以为两者提供完整的sessionInfo()。
supp len half one two
1 OJ 619.9 619.9 0 0
2 VC 508.9 508.9 0 0
这似乎没有出现错误。在我的数据中,我只有三个剂量&#39;但很多补充类型&#39;。如果半类中没有值,则将全部总和设为一个或两个。
我是否有办法在不同的版本类型中生成一致的输出?
感谢您的帮助。
答案 0 :(得分:7)
summarise
更新为“默认变异”可以这么说。因此,在最后三个变量中,当您引用len
时,实际上是指您刚刚创建的len
变量,它只是一个值。称之为别的:
test <- ddply(x,c("supp"),summarize,
+ len1 = sum(len,na.rm=TRUE),
+ half = sum(len[dose==0.5],na.rm=TRUE),
+ one = sum(len[dose==1],na.rm=TRUE),
+ two = sum(len[dose==2],na.rm=TRUE))
> test
supp len1 half one two
1 OJ 619.9 132.3 227.0 260.6
2 VC 508.9 79.8 167.7 261.4
(我原本错误地称这是ddply
的变化。)至于为什么,我想因为它看起来很方便,人们要求改变。 Here是引发问题和后续补丁的链接。