【问题标题】:subset xts up to but NOT including subset date OR in POSIXct子集 xts 最多但不包括子集日期或 POSIXct
【发布时间】:2014-03-09 06:09:48
【问题描述】:

一些示例数据.....

library(xts)

ref <- data.frame(Date = c("2/1/2000"))

frame <- read.table(text = " x   Date      Time
                             a   1/1/2000  5:00
                             a   1/1/2000  18:00 
                             a   2/1/2000  7:00",
                             stringsAsFactors = FALSE,
                         header = TRUE
                     )

ref$Date <- as.POSIXct(ref$Date, format = "%d/%m/%Y")   

frame$datetime <- paste(frame $Date,frame $Time, sep = " ")
frame$datetime <- as.POSIXct(frame $datetime, format = "%d/%m/%Y %H:%M")
frame <- xts(frame[, 1], order.by= frame [, 4] )

我可以使用匹配 ref 的帧中的所有天数..

> frame[ paste0(":", ref$Date) ]
                    [,1]
2000-01-02 07:00:00 "a" ]

以及之前的所有日子,包括使用

> frame[ paste0("::", ref$Date) ]
                    [,1]
2000-01-01 05:00:00 "a" 
2000-01-01 18:00:00 "a" 
2000-01-02 07:00:00 "a" 

但如果我只想要前几天我做不到:

> frame[ !(paste0(ref$Date, "::")) ]
Error in !(paste0(ref$Date, "::")) : invalid argument type

问题

  1. 有没有一种简单的方法可以做到这一点?
  2. 不求助于xts,如何仅使用 POSIXct 来做到这一点?

【问题讨论】:

    标签: r time-series xts posixct


    【解决方案1】:

    我的投注解决方案是:

    frame[ paste0("::", ref$Date - 24*60*60) ]
    

    【讨论】:

    • 您可以将head 与否定的n 一起使用:head(frame[paste0("/",ref$Date)], -1)
    • 感谢 GSee,但我通常可能在同一天有很多匹配项,我不一定知道为负头设置 n 什么。虽然我想我可以从nrow(frame[ paste0(":", ref$Date) ]) 得到这个
    猜你喜欢
    • 2012-02-23
    • 2017-07-25
    • 2020-10-29
    • 1970-01-01
    • 2012-08-02
    • 2013-06-25
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多