r - 扁平化/非规范化 R 聚合函数的结果

标签 r aggregate plyr reshape

我对 R 还很陌生,我正在尝试使用 aggregate对数据帧、每个主题和数据集中的每个指标执行一些时间序列整形。这很好用,但我发现结果不是很容易使用的格式。我希望能够将结果转换回与原始数据帧相同的格式。

以 iris 数据集为例:

# 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 .

最佳答案

在这种情况下,我能想到的最佳解决方案是 data.table :

require(data.table)
dt <- data.table(iris, key="Species")
dt.out <- dt[, lapply(.SD, diff), by=Species]

如果你想要一个 plyr解决方案,那么思路基本一致。按 Species 拆分并申请 diff到每一列。
require(plyr)
ddply(iris, .(Species), function(x) do.call(cbind, lapply(x[,1:4], diff)))

关于r - 扁平化/非规范化 R 聚合函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168090/

相关文章:

r - 使用管道将数据类型更改为因子,但它不起作用

c# - 聚合根。兔子洞有多远

r - 按顺序分组,然后查找列中的最小值

sql - 对另一个查询的结果执行查询?

sql - 在sqldf/SQLite中缩放/平均中心/行为变量?

r - R生成的pdf图中损坏的UTF字符

r - 如何在R中的数据框的列中查找属于特定范围的项目数

r - 我应该如何在 Rmarkdown 中打印数据框中的分数?

r - 为什么我的 dplyr group_by & summarise 无法正常工作? (与 plyr 的名称冲突)

r - 使用我自己在 R 中的函数总结数据框中的任意列数