2016-04-13 16 views
-1

Ich habe Tabelle,Set Standardformat für Datum

>dt 
ID  Date 
001 13-Jan-2016 
002 2016-01-10 
003 15-Jan-2016 
004 2016-01-09 
005 2016-01-11 

und ich möchte, dass meine Tabelle wie diese

>dt 
    ID  Date 
    004 09-Jan-2016 
    002 10-Jan-2016 
    005 11-Jan-2016 
    001 13-Jan-2016 
    003 15-Jan-2016 

I Standard festlegen für die Date-Variable und machen es wollen, um machen. Was soll ich machen? Danke.

+0

Kasse das 'lubridate' Paket, es für die Standardisierung Termine –

Antwort

3

Wenn Sie genau die beiden Formate haben Sie zeigen, können Sie grepl verwenden für Buchstaben zu suchen, und verwenden Sie ifelseas.Date ein anderes Format basierend auf dem Ergebnis weitergeben müssen:

as.Date(dt$Date, ifelse(grepl('[a-z]', dt$Date), '%d-%b-%Y', '%Y-%m-%d')) 
# [1] "2016-01-13" "2016-01-10" "2016-01-15" "2016-01-09" "2016-01-11" 

Wenn Sie dt$Date überschreiben, Sie können order sortieren:

dt$Date <- as.Date(dt$Date, ifelse(grepl('[a-z]', dt$Date), '%d-%b-%Y', '%Y-%m-%d')) 
dt[order(dt$Date),] 

# ID  Date 
# 4 004 2016-01-09 
# 2 002 2016-01-10 
# 5 005 2016-01-11 
# 1 001 2016-01-13 
# 3 003 2016-01-15 
+2

nach all dieser Zeit verschiedene Methoden liefert habe ich nicht erkennen Sie angeben könnten ein Vektor von Formaten zu 'as.Date()'. Du lernst jeden Tag etwas, was ich vermute. – thelatemail

+0

Sehr interessant –

+1

@alistaire - Vektorrecycling - es versucht, gegen 'c ('% d-% b-% Y', '% F') [c (1,2,1,2,1)]' 'zu formatieren – thelatemail