【发布时间】:2012-01-14 06:00:55
【问题描述】:
我正在使用 R 使用 zoo 和 chron 进行时间序列分析。我有一个包含大量数据的动物园对象,并且需要能够使用window 函数将数据子集为仅一天的价值,然后是第二天的价值,然后是下一天的价值,等等。
我试图找到最简单的方法来创建一个数组,其中包含特定时期内每一天的日期,并提出了以下内容:
orig = c(month=1, day=1, year=2005)
dates <- chron(1:1825, origin=orig, out.format=c(dates="d/m/y", times="h:m"))
这使用儒略日表示法,从我日期期间的第一天开始,有 1825 天(365*5 - 所以五年)。然后我尝试使用该数组的每个元素执行一个 for 循环:
for (date in dates)
{
s = chron(date, "00:00:00", origin=orig)
e = chron(date, "23:59:59", origin=orig)
aeronet_day = window(aeronet, start=s, end=e)
}
但是,这给了我一个警告,说我正在为 aeronet zoo 对象和 s 和 e 变量使用不同的来源,并且它没有选择任何数据。
有没有更好的方法来做到这一点?或者有办法解决这个问题?基本上我想要的是运行一个 for 循环,在循环中我可以使用aeronet_day = window(aeronet, start=s, end=e) 代码生成一个包含一天数据的动物园对象(例如,2005 年 5 月 1 日从 00:00:00 到 23:59: 59.
【问题讨论】:
-
我不确定您要做什么,但也许
xts::apply.daily可能会有所帮助? -
您使用
chron和zoo(有自己的时间序列格式)这一事实可能使您的代码/生活比应有的复杂.你可以只用一个或他们吗? (如果失败,请查看lubridate)。 -
@RichieCotton:
zoo没有任何时间序列格式。它与索引的类完全无关(即它甚至不必是基于时间的),它只需要排序。
标签: r time-series zoo chron