【问题标题】:Converting XTS periodicity on non OHLC在非 OHLC 上转换 XTS 周期性
【发布时间】:2011-12-05 06:52:11
【问题描述】:

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

我知道有 to.period 方法,但我的问题是我的列是非 OHLC 列,因此在调用 to.period 时它们会被丢弃。

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

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

【问题讨论】:

    标签: r dataframe xts


    【解决方案1】:

    使用OHLC=FALSE

    查看to.period 的参数

    ?to.period

    编辑:正如 Joshua 指出的那样,不支持 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
    

    【讨论】:

    • 那行得通...如果它被支持“(目前仅支持'OHLC=TRUE')”。
    • 我想我是应该查看帮助页面的人。 ;-)
    【解决方案2】:

    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
    

    【讨论】:

    • 谢谢。发布后我做了类似的事情,效果很好。还有 period.Max, period.Sum, period.Min.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2018-03-22
    • 1970-01-01
    • 2020-07-17
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多