2011-11-21 45 views
7

estoy trabajando en I y necesito cambiar de una columna en formatoCambio de formato de fecha y hora en formato numérico

9/27/2011 3:33:00 PM 

a un formato de valores. En Excel puedo usar la función value(), pero no sé cómo hacerlo en R.

Mis datos es el siguiente:

9/27/2011 15:33 a 1 5 9 
9/27/2011 15:33 v 2 6 2 
9/27/2011 15:34 c 3 7 1 
+3

Para obtener una respuesta completa, denos la salida de 'dput (yourData)' para que podamos recrear su objeto de datos exactamente. La respuesta dada variará según el tipo de columna, ya que actualmente puede ser un factor o carácter. Si de hecho ya es una fecha o una columna POSIX, algo como 'as.numeric()' debería funcionar, creo. Por ejemplo:> 'as.numeric (Sys.time()) [1] 1321895128' – Chase

Respuesta

21

Para convertir una cadena en formato de fecha R, utilizo as.POSIXct - a continuación, se puede coaccionar a un valor numérico usando as.numeric:

> x <- as.POSIXct("9/27/2011 3:33:00 PM", format="%m/%d/%Y %H:%M:%S %p") 
> x 
[1] "2011-09-27 03:33:00 BST" 
> as.numeric(x) 
[1] 1317090780 

el valor que se obtiene indica el número de segundos transcurridos desde una fecha arbitraria, por lo general 1/1/1970. Tenga en cuenta que esto es diferente de Excel, donde una fecha se almacena como el número de días desde una fecha arbitraria (1/1/1900 si mi memoria me sirve bien - Trato de no usar Excel más)

Para más información, consulte ?DateTimeClasses

3

Esto era útil para mí:

> test=as.POSIXlt("09/13/2006", format="%m/%d/%Y") 
> test 
[1] "2006-09-13" 
> 1900+test$year 
[1] 2006 
> test$yday 
[1] 255 
> test$yday/365 
[1] 0.6986301 
> 1900+test$year+test$yday/366 
[1] 2006.697 

puede utilizar enfoques similares si necesita números de días como en Excel.

Cuestiones relacionadas