我对R相当陌生,我试图用aggregate
对数据框,每个主题和数据集中的每个指标执行一些时间序列整形。这工作很好,但我发现结果不是一个非常容易使用的格式。我希望能够将结果转换回原始数据帧的相同格式。R聚合函数的结果平展/非规范化
使用虹膜数据集为例:
# Split into two data frames, one for metrics, the other for grouping
iris_species = subset(iris, select=Species)
iris_metrics = subset(iris, select=-Species)
# Compute diff for each metric with respect to its species
iris_diff = aggregate(iris_metrics, iris_species, diff)
我只是用diff
,以说明我塑造的时间序列的函数,所以我得到一个时间序列可能不同的长度为结果并且绝对不是单个总值(例如平均值)。
我想转换结果,这似乎是一个矩阵,它具有列表值单元格到原始“平坦”数据框。
我主要关心如何管理这个结果从aggregate
结果,但我会很好的解决方案,在plyr
或reshape
做任何事情。
你在谈论时代系列..你举个基于虹膜的例子吗?!!你聚合使用差异?理由是什么?它会更好地使用时间序列软件包(动物园,xts,..)之一!真的我不明白你想要做什么(我至少读了3次你的问题) – agstudy 2013-03-01 23:21:28
@agstudy,我*想*这个问题与'aggregate'的行为有点关系,如果你给它一个像'summary'或'fivenum'或其他可以返回多个列的函数。在这种情况下,结果是*看起来像多列data.frame,但实际上是一个'matrix'作为'data.frame'中的一列。因此,一个'do.call(data.frame,...)'应该能够“平坦”输出。 – A5C1D2H2I1M1N2O1R2T1 2013-03-02 09:54:10
@AnandaMahto谢谢。我明白你的观点。 – agstudy 2013-03-02 19:39:08