2016-04-13 16 views
-1

Masayı var biçimi,Set standart Tarih

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

ve benim masa ı Tarih değişkeni için varsayılan ayarlamak ve sipariş yapmak istiyorum bu

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

gibi olmak istiyorum. Ne yapmalıyım? Teşekkürler.

+0

ödeme 'lubridate' paketi, tüm bu zamandan sonra tarihleri ​​ –

cevap

3

Eğer göstermek tam iki biçimleri varsa, harfler aramaya grepl kullanın ve sonucuna dayanarak farklı bir biçim as.Date geçmek için ifelse kullanabilirsiniz:

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" 

Eğer, dt$Date üzerine yazarsanız sıralamak için order kullanabilirsiniz:

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

standartlaştırılması için çeşitli yöntemler sağlar sana belirleyebildiğinde fark etmedi as.Date() 'biçiminde bir vektör. Her gün bir şeyler öğreniyorsun. – thelatemail

+0

Çok ilginç –

+1

@alistaire - vektör geri dönüşüm - 'c ('% d-% b-% Y ','% F ')' e karşı formatlamaya çalışıyor [c (1,2,1,2,1)] ' – thelatemail