我希望(算术上)平均每日数据,从而将我的每日时间序列转换为每周一次 .
在这个帖子之后:How does one compute the mean of weekly data by column using R?,我正在使用 xts 库 .
# Averages daily time series into weekly time series
# where my source is a zoo object
source.w <- apply.weekly(source, colMeans)
我遇到的问题是,这个系列的平均值是星期二到下一个星期一的数据 .
我正在寻找从星期一到星期五平均每日数据的选项 .
任何提示?
这里有一点:
# here is part of my data, from a "blé colza.txt" file
24/07/2012 250.5 499
23/07/2012 264.75 518.25
20/07/2012 269.25 525.25
19/07/2012 267 522.5
18/07/2012 261.25 517
17/07/2012 265.75 522.25
16/07/2012 264.25 523.25
13/07/2012 258.25 517
12/07/2012 253.75 513
11/07/2012 246.25 512.75
10/07/2012 248 515
09/07/2012 247 519.25
06/07/2012 243.25 508.25
05/07/2012 245 508.5
04/07/2012 236 500.5
03/07/2012 234 497.75
02/07/2012 234.25 489.75
29/06/2012 229 490.25
28/06/2012 229.75 487.25
27/06/2012 229.75 493
26/06/2012 226.5 486
25/06/2012 220 482.25
22/06/2012 214.25 472.5
21/06/2012 212 469.5
20/06/2012 210.25 473.75
19/06/2012 208 472.75
18/06/2012 206.75 462.5
15/06/2012 203 456.5
14/06/2012 205.25 460.5
13/06/2012 205.25 465.25
12/06/2012 205.25 469
11/06/2012 208 471.5
08/06/2012 208 468.5
07/06/2012 208 471.25
06/06/2012 208 467
05/06/2012 208 458.75
04/06/2012 208 457.5
01/06/2012 208 463.5
31/05/2012 208 466.75
30/05/2012 208 468
29/05/2012 212.75 469.75
28/05/2012 212.75 469.75
25/05/2012 212.75 465.5
# Loads external libraries
library("zoo") # or require("zoo")
library("xts") # or require("xts")
# Loads data as a zoo object
source <- read.zoo("blé colza.txt", sep=",", dec=".", header=T, na.strings="NA", format="%d/%m/%Y")
# Averages daily time series into weekly time series
# https://stackoverflow.com/questions/11129562/how-does-one-compute-the-mean-of-weekly- data-by-column-using-r
source.w <- apply.weekly(source, colMeans)
5 回答
mrdwab的answer才恰好工作,因为他们与OP共享一个时区(或其特征) . 为了显示:
现在你可以运行
head(out,5)
并看到一些输出根据使用的时区而有所不同:更强大的解决方案是确保正确表示您的时区,方法是使用
Sys.setenv(TZ="<yourTZ>")
全局设置或indexTZ(Source) <- "<yourTZ>"
为每个单独的对象设置它 .我运行了你的例子,如果我正确理解了问题,
apply.weekly
函数将第一个星期五与你数据的第一个星期一聚合在一起 . 我不使用xts
包,所以其他人必须提供更多的见解 . 我会将日期转换为日期向量,每周的星期日代表该周的每个观察 .?strptime
汇总了我用于转换的代码 .再看看我手边的问题 .
使用 xts 库是直截了当的 .
跟进约书亚乌尔里希的答案 .
在我的系统(kUbuntu 12)上,以下内容未检索zone.tab文件
但是,我能够找到zone.tab
由于某种原因(可能是文件权限),我无法直接指向该zone.tab文件,即写入:
回:
制作zone.tab的本地副本并指向该副本后问题已解决:
现在,如果您使用Google for zone.tab,您将在线找到zone.tab的副本,以防您的系统没有或已损坏或其他任何内容 . 这是一个这样的地方:
附:我<15所以我不能发表评论,这是我原本应该做的 .
我能够重现您的问题,您可以使用
period.apply()
和自定义"endpoints"来解决它 .首先,您提供的数据采用其他人可以轻松阅读的格式 .
我们将清理并将对象转换为
xts
对象 .现在 . 我们尝试
apply.weekly()
函数,但它没有给我们你想要的 .要使用
period.apply()
,您需要指定期间的终点(可以是不规则的) . 在这里,我们的第一个时期只是第一个日期,从那里开始,每五天一次 . 剩下几天,所以我们在最后一段时间结束时加上nrow(temp.x)
.