我想计算这个动物园对象的每一行的平均值,所以最后我需要一个新的动物园对象,每分钟都有平均值。 实际上我正在尝试应用更高级的统计数据,但从计算的角度来看,它应该与平均值相同。
头(ZS)
2014-03-09 08:00:00 1839.00 1842.00 1849.00 1838.50 1851.75 1843.50 1862.50 1874.00 1875.00 1878.00
2014-03-09 08:01:00 1838.75 1842.00 1848.75 1838.25 1851.75 1844.25 1862.50 1874.00 1875.25 1877.75
2014-03-09 08:02:00 1838.50 1842.25 1848.25 1838.25 1851.50 1843.75 1862.50 1874.00 1875.50 1878.00
2014-03-09 08:03:00 1839.25 1842.50 1848.25 1838.50 1851.50 1843.00 1862.25 1874.00 1875.50 1877.75
2014-03-09 08:04:00 1839.25 1842.50 1848.25 1838.00 1851.50 1843.00 1862.25 1874.25 1875.25 1877.75
2014-03-09 08:05:00 1838.75 1842.25 1848.25 1837.75 1851.75 1843.50 1862.25 1874.00 1875.50 1877.75
答案 0 :(得分:4)
试试这个:
zoo(rowMeans(zs), time(zs))
或
zoo(apply(zs, 1, mean), time(zs))
或
Reduce(`+`, as.list(zs)) / ncol(zs)
或
zmean <- zs[, 1]
for(i in 2:ncol(zs)) zmean <- zmean + zs[, i]
zmean <- zmean / ncol(zs)
ADDED 更多方法
答案 1 :(得分:0)
我遇到了这个问题,想要一个更可靠的解决方案。具体来说,我想要一个与apply
相同的功能,除了在参数{中传递了zoo
对象(或从zoo
继承的对象,例如xts
)之外。 {1}}。在这种情况下,函数应尽可能返回X
(或zoo
等)对象。结果还应该保留用户可能附加到原始xts
对象的所有其他属性。
有几个挑战。首先,根据通过参数zoo
和apply
传递给MARGIN
的内容,FUN
可能返回apply
,list
或vector
的尺寸大于2。有关更多详细信息,请参见array
文档。
因此,如果您考虑一下,可以将apply
的唯一时间结果作为apply
对象返回,即结果是带有zoo
的{{1}}或带有matrix
的向量。否则,您将无法确定如何将原始nrow(result) == nrow(originalZooObject)
对象的length(result) == nrow(originalZooObject)
值添加到index
的结果中。
我想到了以下代码,该代码在结果中保留了原始zoo
对象的所有适用属性。因此,它也可以与apply
之上的大多数S3类一起使用,例如zoo
。
我唯一了解不到的是用户可能附加了一个属性,该属性适用于原始zoo
对象的列。如果xts
合并了列,则user属性可能不适用于结果的列。
尽管我使用命名约定从泛型函数进行调度,但是zoo
不是泛型的,因此FUN
被设计为直接调用。如果使用通用版本的apply
覆盖apply.zoo
函数,那么只要将apply
对象传递给apply
,apply.zoo
就会自动运行。 / p>
zoo