2014-04-15 10 views
12

Questa domanda potrebbe essere semplice per alcuni di voi, ma portare con me dato che sono un principiante in R.come convertire il fattore in DateTime in R?

Ho un dataframe che ha una colonna fattore (chiamato ora) contenente i dati DateTime come il seguente:

time 
01/01/2011 00:10 
02/01/2011 03:00 
03/01/2011 05:00 
04/01/2011 10:03 

Voglio convertire questa colonna nella colonna DateTime in R. Ho cercato e provato alcune funzioni ma mi dà risultati 'NA'. Le seguenti funzioni sono quelle che ho provato:

> dataframe1$datetime <- as.POSIXlt(as.character(dataframe1$time), format="%d/%m/%Y %H:%M") 
> dataframe1$datetime <- as.POSIXlt(strptime(dataframe1$time), format="%d/%m/%Y %H:%M") 
> dataframe1$datetime <- as.POSIXlt(dataframe1$time, format="%d/%m/%Y %H:%M") 
> dataframe1$datetime <- as.chron(dataframe1$time, "%d/%m/%Y %H:%M") 

Non so che altro provare. Voglio idealmente aggiungere tre colonne e cioè datetime, data e ora.

risposta

16

Prova:

dataframe1$datetime <- strptime(x = as.character(dataframe1$datetime), 
           format = "%d/%m/%Y %H:%M") 
+1

ho potuto extrat la data ma non il tempo. Ho usato 'dataframe1 $ datetime <- strptime (x = as.character (dataframe1 $ datetime), format ="% H:% M ")' qualche idea? –

+0

Per quanto ne so, non esiste una classe di data/ora solo per H-M-S; le tue scelte sono Y-M-D o Y-M-D-H-M-S-etc-etc. Se ne trovi uno, però, mi piacerebbe scoprirlo! –

+1

Ho trovato una soluzione 'dataframe1 $ tempo <- formato (dataframe1 $ datetime,"% H:% M:% S ")' :) –

2

Probabilmente la cosa più semplice da fare è usare i lubridate pacchetti che ha un gran numero di funzioni per la manipolazione data. Di seguito vi convertire il vostro tempo in un oggetto POSIXct:

library(lubridate) 
mdy_hm(as.character(dataframe1$time)) 

Vedi ?mdy per vedere la varietà di funzioni di data di analisi.

Per una versione leggermente più dettagliato che non si basa su lubridate

strptime(x = as.character(dataframe1$datetime), format = "%d/%m/%Y %H:%M") 
Problemi correlati