2014-09-26 18 views
8

Lubridat'ta guess_formats işlevinin nasıl kullanıldığını anlama konusunda sorun yaşıyorum. Bazı bilinmeyen set/sıra formatlarında bir tarihler vektörüne sahibim. Onları bir Tarih nesnesine dönüştürmek isterim (veya en azından olabildiğince fazla dönüştürürüm).guess_formats + R + lubridate

library(lubridate) 
sampleDates <- c("4/6/2004","4/6/2004","4/6/2004","4/7/2004", 
     "4/6/2004","4/7/2004","2014-06-28","2014-06-30","2014-07-12", 
     "2014-07-29","2014-07-29","2014-08-12") 
formats <- guess_formats(sampleDates, c("Ymd", "mdY")) 
dates <- as.Date(sampleDates, format=formats) 

Bu, tüm NA adlı verir: Aşağıdaki kod denedim budur.

Açıkçası bu sadece kısa bir örnektir. Gerçek durumda, çeşitli biçimlerin dağınık olduğu yeri bilmezdim ve% 100 /% d /% Y ve% Y-% m-% d olduğundan emin olmazdım. Birisi, ya A.'yi bu örnekte nasıl kullanacağımı tahmin edebilir miydi? Ya da B., burada, çok fazla regex olmaksızın, lubridat/base R'de kullanmak için daha uygun bir şey var. Teşekkürler!

Düzenleme: Ayrıca parse_date_time çalıştım. Ne anlamıyorum şu bu örnek için çalışmalar geçerli:

parse_date_time(sampleDates, 
      orders = c("Ymd", "mdY"), 
      locale = "eng") 

Ama bu değil: Verilerin Benim asıl setinde

parse_date_time(sampleDates, 
      orders = c("mdY", "Ydm"), 
      locale = "eng") 

, ben biçimlendirme sırasını bilmez, Bu işlev için önemli gibi görünüyor.

Çift Düzenleme: Dur, tamam, görüyorum, ilk parse_date_time örneğinde Ymd ve ikinci saniyede Ydm var.

cevap

10

aramaya gerek yok sadece parse_date_time kullanın:

parse_date_time(sampleDates, c("Ymd", "mdY")) 

[1] "2004-04-06 UTC" "2004-04-06 UTC" "2004-04-06 UTC" "2004-04-07 UTC" "2004-04-06 UTC" 
[6] "2004-04-07 UTC" "2014-06-28 UTC" "2014-06-30 UTC" "2014-07-12 UTC" "2014-07-29 UTC" 
[11] "2014-07-29 UTC" "2014-08-12 UTC" 

Dahili olarak bu arayacak.