我正在使用xts或data.frame对象,需要一种简单的方法将1分钟间隔的数据汇总为15分钟,每小时等等...
我意识到有to.period
方法,但我的问题是我的列是非OHLC列,因此在调用.period时它们会被删除。
我的数据有三列:POSIXct,SomeVar,AnotherVar。
我需要能够转换这些数据,同时这样做要么总结我的数据列,要么接受最大值。与to.period
的工作方式非常相似,但列的命名方式不同。此外,我的列数据有时是因子而不是数字,所以如果这也可以处理转换(计算时),这将是理想的。
答案 0 :(得分:6)
将period.apply
(或apply.daily
,apply.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