2014-02-11 366 views
1

一些示例數據.....子集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來完成此操作?

回答

0

投注溶液I具有是:

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

可以使用'head'具有負'N':'頭(幀[paste0( 「/」,參考$日期)], - 1)' – GSee

+0

謝謝GSee,但我通常可能會在同一天有很多比賽,我不一定知道如何設置負數的'n'。雖然我想我可以從'nrow(frame [paste0(「:」,ref $ Date)])''得到這個 – user1320502