2011-10-13 9 views
6

Tengo un objeto xts, x. Quiero ejecutar un bucle for hasta cierto tiempo, según la marca de tiempo en el índice.Obtener tiempo desde el índice xts

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

Digamos que quiero ejecutar mi ciclo siempre que el tiempo en el índice sea inferior a, por ejemplo, 16:40:00. ¿Cómo elimino el componente de tiempo, dado el formato del índice anterior?

Respuesta

4

Esto debería llevarlo al parque de pelota de donde quiere estar. Con format, extrae solo la parte de horas, minutos y segundos. La página de ayuda para ?strptime brinda más detalles sobre los símbolos utilizados para la extracción de información.

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

gracias, funciona a las mil maravillas. una pregunta, sin embargo, para comparar este componente del tiempo con un tiempo arbitrario, digamos a las 16:00:00, ¿cómo lo haré? Lo he intentado: if (new.x> strptime ("16:00:00", "% H:% M:% S"), pero no parece captarlo, ya que el new.x es un histórico valor y la nueva hora tiene la fecha de hoy –

+0

@ED Supongo que podría crear una nueva variable con la fecha adjunta, o tener su variable actual con la fecha también. –

2

El problema es conseguir la zona horaria correcta. En mi sistema la tz especificación de "SAST" no es válido, pero quizás en el suyo será:

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

(. Parece ser UTC +2) Y me retracto de lo que dije sobre mi sistema no reconocerla .

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

a fin de utilizar:

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