开发者

Get time from xts index

开发者 https://www.devze.com 2023-04-12 21:30 出处:网络
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.

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

精彩评论

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

关注公众号