2016-07-06 2 views
0

Ich versuche, einen Datenrahmen mit Datumsangaben im menschlich lesbaren Format "MM/TT/JJ" in Epochentage zu konvertieren. HierSie müssen das Datum im Format "MM/TT/JJ" in Epoche umwandeln in

ist ein Beispiel für den Datenrahmen:

human.date 
    1 7/25/11 
    2 7/25/11 
    3 7/25/11 
    4 7/25/11   
    5 7/25/11 
    6 7/25/11 

Ich mag diese Funktion nutzen jedes Datum in dem Datenrahmen konvertieren Tage nach Epoche:

# Convert from human readable date to days since epoch and round to nearest day 
round(as.numeric(as.POSIXct("yyyy/MM/dd HH:mm:ss", origin="1970-01-01"))/86400) 

jedoch die Funktion oben funktioniert nur, wenn das vom Menschen lesbare Datum das Format "JJJJ/MM/TT" hat.

round(as.numeric(as.POSIXlt("2000/02/20", origin="1970-01-01"))/86400) 
[1] 11007 

Gibt es einen einfacheren Weg, um diese Umwandlung oder eine andere Funktion zu tun, ich verwenden kann, werden Daten im Format „MM/TT/JJ“ nehmen?

+0

Was Epoche Tage sind? – thepule

Antwort

2

Sie sollten die format Argument der as.POSIXlt Funktion:

> human.date <- "7/25/11" 
> round(as.numeric(as.POSIXlt(human.date, format = "%M/%d/%y", origin = "1970-01-01"))/86400) 
[1] 15180 
+0

Vielen Dank. Weißt du, wie ich auch einen ganzen Datenrahmen mit über 600 Daten durchlaufen und diese Funktion anwenden würde? –

+0

Sehen Sie sich das 'dplyr'-Paket an, und insbesondere die' mutate'-Funktion – hugovdberg

Verwandte Themen