gpt4 book ai didi

rollapply 动物园和次日数据

转载 作者:行者123 更新时间:2023-12-05 01:47:33 25 4
gpt4 key购买 nike

我有一个数据集,其中的观测值间隔不等,而且观测值每天发生不止一次。我想对我的数据窗口应用一个函数,但我希望窗口按时间而不是按行定义。例如,我想计算数据集中第 1-5 天、第 2-6 天等的平均值,第 1-5 天可能对应于第 1-13 行,第 2-6 天对应于第 3 行- 18等

我看到 rollapply 函数接受 zoo 对象,我假设它会像我上面描述的那样工作(即在由时间定义的窗口而不是窗口上应用该函数由行定义)。然而,情况似乎并非如此:

my.ts = zoo( 1:100, as.Date("201401","%Y%j")+1:100 )
mean1 = rollapply( my.ts, 3, mean, align="right" )
my.ts = zoo( 1:100, as.Date("201401","%Y%j")+1:100/2 )
mean2 = rollapply( my.ts, 3, mean, align="right" )
all( mean1==mean2 )

我希望 mean2mean1 不同,因为 mean2 每天有两次观察,而不是一次。但是,rollapply 似乎使用行来定义窗口,而不是 zoo 对象中的时间。有解决方法吗?或者,可能我应该使用其他一些函数来代替 rollapply

最佳答案

rollapply 记录在 ?rollapply 中,因此无需猜测它是如何工作的。

要做你想做的事,用 NAs 填充缺失的天数,然后执行平均值。例如,每三天而不是每三个观察值取平均值:

library(zoo)

# test data
tt <- as.Date("2000-01-01") + c(1, 2, 5, 6, 7, 8, 10)
z <- zoo(seq_along(tt), tt)

# fill it out to a daily series, zm, using NAs
g <- zoo(, seq(start(z), end(z), "day")) # zero width zoo series on a grid
zm <- merge(z, g)

rollapply(zm, 3, mean, na.rm = TRUE, fill = NA)

关于rollapply 动物园和次日数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807580/

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