在非OHLC上转换XTS周期

时间:2011-10-11 12:42:01

标签: r dataframe xts

我正在使用xts或data.frame对象,需要一种简单的方法将1分钟间隔的数据汇总为1​​5分钟,每小时等等...

我意识到有to.period方法,但我的问题是我的列是非OHLC列,因此在调用.period时它们会被删除。

我的数据有三列:POSIXct,SomeVar,AnotherVar。

我需要能够转换这些数据,同时这样做要么总结我的数据列,要么接受最大值。与to.period的工作方式非常相似,但列的命名方式不同。此外,我的列数据有时是因子而不是数字,所以如果这也可以处理转换(计算时),这将是理想的。

2 个答案:

答案 0 :(得分:6)

period.apply(或apply.dailyapply.weekly等)与您自己的自定义功能一起使用。类似的东西:

library(quantmod)
getSymbols("SPY")
myFun <- function(x) c(Low=min(Lo(x)),Vol=sum(Vo(x)))
out <- period.apply(SPY, endpoints(SPY,"years"), myFun)
#               Low         Vol
# 2007-12-31 136.75 39313707500
# 2008-12-31  74.34 75960174800
# 2009-12-31  67.10 62061939800
# 2010-12-31 101.13 52842325500
# 2011-10-10 107.43 42314587300

答案 1 :(得分:3)

使用OHLC=FALSE

查看to.period

的参数

?to.period

编辑:正如约书亚指出的那样,不支持OHLC参数。但是,它似乎有效。

> library(quantmod)
> getSymbols("SPY")
[1] "SPY"
> to.period(Cl(SPY), 'years', OHLC=FALSE)
           SPY.Close
2007-12-31    146.21
2008-12-31     90.24
2009-12-31    111.44
2010-12-31    125.75
2011-10-10    119.58