2013-01-16 16 views
8

ho una semplice cornice di dati:Conversione due colonne di data e ora a un

D <- c("2012/12/14", "2012/12/14") 
Time <- c("18:40:37", "18:40:48") 
df1 <- data.frame(D, Time) 

desidero unire le due colonne di data e ora in uno, preferibilmente nel formato giorno, mese , anno, tempo.

Come faccio a fare questo?

+0

Come un TIMESTAMP? – duffymo

risposta

16
R> within(df1, { timestamp=format(as.POSIXct(paste(D, Time)), "%d/%m/%Y %H:%M:%S") }) 

      D  Time   timestamp 
1 2012/12/14 18:40:37 14/12/2012 18:40:37 
2 2012/12/14 18:40:48 14/12/2012 18:40:48 
+0

Molte grazie @rcs - ma come faccio a ottenere una colonna aggiuntiva nel mio dataframe (df1) con questa colonna data/ora combinata? –

+0

Mille grazie - è perfetto @rcs. –

+3

So che questo commento ha due anni di ritardo, ma la risposta dovrebbe essere df1 <- entro ... –

2

Un'alternativa leggermente più corta potrebbe essere:

df1 <- within(df1, { timestamp=strptime(paste(D, Time), "%Y/%m/%d%H:%M:%S") }) 
df1 
     D  Time   timestamp 
1 2012/12/14 18:40:37 2012-12-14 18:40:37 
2 2012/12/14 18:40:48 2012-12-14 18:40:48 
1
df1$TS <- as.POSIXct(paste(df1$D, df1$Time)) 

Ciò creerà una colonna aggiuntiva TS in df1 che unisce data e ora e sarà di tipo POSIXct. Puoi confermare con

str(df1)