2011-11-21 25 views
7

sto lavorando in R e ho bisogno di cambiare da una colonna in formatoPassaggio da formato di data e ora in formato numerico

9/27/2011 3:33:00 PM 

in un formato di valore. In Excel è possibile utilizzare la funzione value(), ma non so come farlo in R.

miei dati simile a questa:

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

Per ottenere una risposta completa, fornirci l'output di 'dput (yourData)' in modo che possiamo ricreare esattamente l'oggetto dati. La risposta fornita varierà a seconda del tipo di colonna, in quanto potrebbe essere un fattore o un personaggio. Se in realtà è già una data o una colonna POSIX, qualcosa come 'as.numeric()' dovrebbe funzionare credo. Ad esempio:> 'as.numeric (Sys.time()) [1] 1321895128' – Chase

risposta

21

Per convertire una stringa in R formato della data, uso as.POSIXct - allora si può costringere a un valore numerico utilizzando 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 

il valore che si ottiene indica il numero di secondi da una data arbitraria, di solito 1/1/1970. Si noti che questo è diverso da Excel, dove una data viene memorizzata come il numero di giorni da una data arbitraria (1/1/1900 se la memoria mi serve bene - cerco di non usare più Excel.)

Per ulteriori informazioni, vedere ?DateTimeClasses

3

Questo è stato utile per me:

> 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 

È possibile utilizzare approcci simili se avete bisogno di numeri al giorno come in Excel.