2011-09-24 10 views
6

Digamos que quiero generar un marco de datos que contiene una columna con estructurado en el siguiente formato.Creando una secuencia única de fechas

2011-08-01 
2011-08-02 
2011-08-03 
2011-08-04 
... 

Quiero saber si es posible generar estos datos con el comando seq().

algo como lo siguiente: (obviamente no funciona)

seq(2011-08-01:2011-08-31) 

iba yo en vez tenga que utilizar TODATE y expresiones regulares para generar esta fecha en este formato específico .

+1

Intenta leer hasta el final de '? Seq'. – joran

+1

Tenga en cuenta que si el propósito de esto es crear una serie temporal con esas fechas, entonces puede evitar crear esta secuencia explícitamente creando un objeto zooreg. Este ejemplo crea una serie temporal de clases '" zooreg "' cuyos valores son 1, 2, ..., 10 para 10 fechas consecutivas que comienzan en 2011-08-01: 'library (zoo); z <- zooreg (1:10, as.Date ("2011-08-01")) '. –

Respuesta

19

Como señalé en mi comentario, tiene seq método para fechas, seq.Date:

seq(as.Date('2011-01-01'),as.Date('2011-01-31'),by = 1) 
[1] "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07" "2011-01-08" 
[9] "2011-01-09" "2011-01-10" "2011-01-11" "2011-01-12" "2011-01-13" "2011-01-14" "2011-01-15" "2011-01-16" 
[17] "2011-01-17" "2011-01-18" "2011-01-19" "2011-01-20" "2011-01-21" "2011-01-22" "2011-01-23" "2011-01-24" 
[25] "2011-01-25" "2011-01-26" "2011-01-27" "2011-01-28" "2011-01-29" "2011-01-30" "2011-01-31" 
+0

Documentación: http://www.inside-r.org/r-doc/base/seq.Date – sshevlyagin

9

he cometido el mismo error con la SEC() el intento de hacer una secuencia numérica. No utilice el operador ":" entre argumentos, y deberán ser fechas si desea crear una secuencia de fecha. Otra forma es tomar una fecha y añadir una secuencia numérica empezando por 0:

> as.Date("2000-01-01") + 0:10 
[1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05" "2000-01-06" 
[7] "2000-01-07" "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11" 
7

Usted podría intentar timeBasedSeq en el paquete XTS. Observe que el argumento es una cadena y el uso de dos puntos.

timeBasedSeq("2011-08-01::2011-08-31") 
1

que tenía que generar una ss por min, y no era fácil, pero he encontrado seq.POSIXt en base. En su caso, quiere una secuencia de datos diarios desde 2011-08-01 a 2011-08-31. Así que sugiero

days <- seq(ISOdate(2011,8,1), by = "day", length.out = 31) 
class(days) 
"POSIXct" "POSIXt" 
Cuestiones relacionadas