使用each()和reforme2::dcast聚合数据
我通常使用使用each()和reforme2::dcast聚合数据,r,aggregate-functions,plyr,reshape,R,Aggregate Functions,Plyr,Reshape,我通常使用重塑包来聚合一些数据(d'uh),通常使用plyr,因为它的超级棒功能每个。最近,我收到一个建议,建议我切换到重塑2并尝试一下,现在我似乎无法再使用每一个魔法了 重塑 >m投射(m,am+vs~变量,每个变量(最小值,最大值,平均值,标准差)) am与hp_最小hp_最大hp_平均hp_sd 1 0 0 150 245 194.16667 33.35984 2 0 1 62 123 102.14286 20.93186 3 1 0 91
重塑
包来聚合一些数据(d'uh),通常使用plyr
,因为它的超级棒功能每个
。最近,我收到一个建议,建议我切换到重塑2
并尝试一下,现在我似乎无法再使用每一个魔法了
重塑
>m投射(m,am+vs~变量,每个变量(最小值,最大值,平均值,标准差))
am与hp_最小hp_最大hp_平均hp_sd
1 0 0 150 245 194.16667 33.35984
2 0 1 62 123 102.14286 20.93186
3 1 0 91 335 180.83333 98.81582
4 1 1 52 113 80.57143 24.14441
重塑2
require(plyr)
>m dcast(m,am+vs~变量,每个(最小值,最大值,平均值,标准差))
结构错误(有序,尺寸=ns):
dims[product 4]与对象[16]的长度不匹配
此外:警告信息:
1:在fs[[i]](x,…):min没有不丢失的参数;返回Inf
2:在fs[[i]](x,…)中:max没有不丢失的参数;返回-Inf
我没有心情去梳理这一点,因为我以前的代码在重塑
方面非常有魅力,但我真的很想知道:
是否可以将每个
与dcast
一起使用
是否建议使用重塑2
?重塑
是否已弃用
您的第一个问题的答案似乎是否定的。引用自?重塑2::dcast
:
如果您提供的变量组合不能唯一标识
在原始数据集中的一行,您需要提供
聚合函数,fun.aggregate。这个函数应该需要一段时间
并返回单个摘要统计信息
查看Hadley的github页面,可以看出他知道此功能已被删除,但似乎认为最好在plyr中完成,大概是通过以下方式:
ddply(m,.(am,vs),summarise,min = min(value),
max = max(value),
mean = mean(value),
sd = sd(value))
或者如果您真的想继续使用每一个:
ddply(m,.(am,vs),function(x){each(min,max,mean,sd)(x$value)})
是的,我看到了,我想还是有一些黑客的方法可以做到这一点谢谢重塑
的状态如何?它被弃用了吗@我不知道。但哈德利写了这么多的软件包,他可能只能定期维护一定数量的软件包。我的印象是,他会根据用户反馈将重塑
功能移回重塑2
。所以也许让他知道最好?是的,乔兰,我想你是对的。如果速度再快一点,我也可以用plyr。将不得不做一些测试…从重塑自述:重塑2是重塑软件包的重新启动。该软件包首次发布已经五年多了,在这段时间里,我学到了大量关于R编程的知识,以及如何在R中处理数据。Reforme2利用这些知识制作了一个新的软件包,用于重新调整数据,使其更加集中,速度更快。此版本以功能为代价提高了速度,因此我将其重命名为Reforme2,以避免给现有用户带来问题。根据用户反馈,我可能会重新介绍其中一些功能。
ddply(m,.(am,vs),summarise,min = min(value),
max = max(value),
mean = mean(value),
sd = sd(value))
ddply(m,.(am,vs),function(x){each(min,max,mean,sd)(x$value)})