从xts索引中获取时间

时间:2011-10-13 06:21:44

标签: r xts

我有一个xts对象,x。我想根据索引中的时间戳运行for循环直到某个时间。

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

假设只要索引中的时间小于16:40:00,我就想运行循环。考虑到上面索引的格式,如何去掉时间组件?

2 个答案:

答案 0 :(得分:4)

这应该让你进入你想去的球场。使用format,您只需提取小时,分钟和秒部分。 ?strptime的帮助页面提供了有关用于提取信息的符号的更多详细信息。

#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"

答案 1 :(得分:2)

问题在于时区是否正确。在我的系统上,“SAST”的tz规范无效,但可能在您的系统上:

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

(似乎是UTC +2。)我收回了我所说的关于我的系统没有认出它的内容。

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

所以使用:

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