子集xts最多但不包括POSIXct中的子集日期OR

时间:2014-02-11 12:41:41

标签: r time-series xts posixct

一些示例数据.....

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] )

我可以在框架中获得与使用..匹配的所有日期。

> 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来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我拥有的最佳解决方案是:

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