Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用quantmod和x27聚合每日数据;至。每周';函数创建星期一而不是星期五结束的每周数据_R_Xts_Quantmod - Fatal编程技术网

R 使用quantmod和x27聚合每日数据;至。每周';函数创建星期一而不是星期五结束的每周数据

R 使用quantmod和x27聚合每日数据;至。每周';函数创建星期一而不是星期五结束的每周数据,r,xts,quantmod,R,Xts,Quantmod,我正在尝试使用quantmod中的“to.weekly”函数将每日股价数据(仅限收盘)汇总为每周股价数据。xts objectfoo持有从2011年1月3日星期一开始到2011年9月20日星期一结束的股票每日股价数据。为了汇总这些每日数据,我使用了: tmp我想出了一个只能产生接近值的方法,也许可以进一步修改它以返回OHLC系列 假设foo是xts对象,首先我们创建星期五的索引向量: fridays = as.POSIXlt(time(foo))$wday == 5 然后我们在它前面加上0:

我正在尝试使用quantmod中的“to.weekly”函数将每日股价数据(仅限收盘)汇总为每周股价数据。xts object
foo
持有从2011年1月3日星期一开始到2011年9月20日星期一结束的股票每日股价数据。为了汇总这些每日数据,我使用了:


tmp我想出了一个只能产生接近值的方法,也许可以进一步修改它以返回OHLC系列

假设
foo
xts
对象,首先我们创建星期五的索引向量:

fridays = as.POSIXlt(time(foo))$wday == 5
然后我们在它前面加上
0

indx <- c(0, which(fridays))
结果:

          [,1]
2011-01-07 2993
2011-01-14 2970
2011-01-21 2940
2011-01-28 3075
对于周五(由于市场关闭,偶尔在周四),使用:

周一(由于市场关闭,偶尔在周二)使用:

或者,您可以创建一个自定义向量
Date
s,其中包含每周要关联的日期。例如,无论市场关闭情况如何,强制每周与星期五相关:

customIdx=seq(自=截止日期(“2011-01-07”),by=7,length.out=nrow(tmp))
索引(tmp)=自定义IDX

感谢安纳托利。我已经将代码改编成包装器代码,并用几个xts对象对其进行了测试,它似乎工作得很好。
indx <- c(0, which(fridays))
period.apply(foo, INDEX=indx, FUN=last)
          [,1]
2011-01-07 2993
2011-01-14 2970
2011-01-21 2940
2011-01-28 3075
tmp = to.weekly(foo, indexAt = "endof") 
tmp = to.weekly(foo, indexAt = "startof")`