gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:10:55 24 4
gpt4 key购买 nike

我对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com