【问题标题】:Delete entries from Friday to Sunday on an xts object删除 xts 对象上周五到周日的条目
【发布时间】:2016-12-04 04:11:26
【问题描述】:

我的 xts 对象如下所示:

                            BID     OFR     PRICE
    2015-01-01 13:15:00 1.48168 1.48285 0.3935712
    2015-01-01 13:20:00 1.48013 1.48102 0.3924305
    2015-01-01 13:25:00 1.47922 1.48012 0.3918190
    2015-01-01 13:30:00 1.47947 1.47970 0.3917616
    2015-01-01 13:35:00 1.48019 1.48046 0.3922617
       .
       .
       .
       .

我将时区设置为 EST。如何删除从东部时间 (EST) 星期五 17:05 到复活节时间 (EST) 星期日 17:00 的条目?提前谢谢你。

【问题讨论】:

    标签: time subset xts delete-row posixct


    【解决方案1】:

    探索xts 中的文档以获取?.indexwday

    假设dat 包含您的xts 时间序列,您可以这样做,以获取您指定(外汇)交易时间所需的数据:

    is_fri <- .indexwday(dat) == 5 & (.indexhour(dat) >= 18 | .indexhour(dat) == 17 & .indexmin(dat) >= 5)
    is_sat <- .indexwday(dat) == 6 
    is_sun <- .indexwday(dat) == 0 & .indexhour(dat) <= 16
    
    xts_data_you_want <- dat[!(is_fri | is_sat | is_sun)]
    

    .indexwday 对于xts 对象中的时间戳返回 1 表示星期一,2 表示星期二,等等,对于 .indexmin.indexhour 也返回应该是自我解释的数值。

    作为检查,您可以执行 weekdays(index(dat)) 以查看 .indexwday 是否返回您对某些时间戳的期望。

    【讨论】:

    • 根据 '.indexwday(dat)` Sunday 等价于==0。您必须将is_sun &lt;- .indexwday(dat) == 7 &amp; .indexhour(dat) &lt;= 16is_sun &lt;- .indexwday(dat) == 0 &amp; .indexhour(dat) &lt;= 16 切换。在运行代码之前运行Sys.setenv(TZ="EST") 是必不可少的,因为该系列是在这个时区实现的。
    猜你喜欢
    • 2021-06-11
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2012-08-08
    • 1970-01-01
    • 2014-03-13
    • 2017-10-05
    相关资源
    最近更新 更多