【发布时间】:2013-02-16 13:34:27
【问题描述】:
我对 R 相当陌生,我正在尝试使用 aggregate 对数据帧、每个主题和我的数据集中的每个指标执行一些时间序列整形。这很好用,但我发现结果不是很容易使用的格式。我希望能够将结果转换回与原始数据框相同的格式。
以鸢尾花数据集为例:
# 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 中执行所有操作的解决方案。
【问题讨论】:
-
你说的是时间序列..你举了一个基于iris的例子?!你聚合使用差异?理由是什么..最好使用时间序列包之一(动物园,xts,..)!真的我不明白你想做什么。(我至少读了3次你的问题)
-
@agstudy,我认为这个问题有点与
aggregate的行为有关,如果你给它一个像summary或fivenum之类的函数否则将返回多于一列。在这种情况下,结果看起来类似于多列data.frame,但实际上是matrix作为data.frame中的一列。因此,do.call(data.frame, ...)应该可以“展平”输出。 -
@AnandaMahto 谢谢。我明白你的意思。