开发者

Get time from xts index

I have an xts object, x. I want to run a for loop until a certain time, based on the time stamp in the index.

> index(x)
[1] "2011-10-12 16:44:00 SAST"

Lets say I want to run my loop as long as the time in the index is less than say 16:40:开发者_如何学C00. How do I strip out the time component, given the format of the index above?


This should get you in the ball park of where you want to be. Using format, you extract just the hours, minutes and seconds part. Help page for ?strptime gives more details about the symbols used for extraction of information.

#if you don't have your string in an appropriate format yet
(x <- strptime("2011-10-12 16:44:00 SAST", format = "%Y-%m-%d %H:%M:%S"))
  [1] "2011-10-12 16:44:00"
class(x)
  [1] "POSIXlt" "POSIXt" 
(new.x <- format(x, format = "%H:%M:%S")) 
  [1] "16:44:00"


The problem is getting the timezone correct. On my system the tz spec of "SAST" is not valid but perhaps on yours it will be:

x[ index(x) < as.POSIXct( "2011-10-12 16:44:00", tz= SAST") ]

(Appears to be UTC +2. ) And I take back what I said about my system not recognizing it.

 as.POSIXct( "2011-10-12 16:44:00", tz= "Africa/Johannesburg")
# [1] "2011-10-12 16:44:00 SAST"

So use:

x[ index(x) <= as.POSIXct( "2011-10-12 16:44:00", tz= "Africa/Johannesburg")]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜