2014-09-26 3 views
8

lubrid에 guess_formats 함수를 사용하는 방법을 이해하는 데 문제가 있습니다. 몇 가지 알려지지 않은 세트/형식의 날짜 벡터가 있습니다. 그들을 Date 객체로 변환하고 싶습니다. (또는 가능한 한 많이 변환하십시오.) 다음 코드는 제가 시도한 것입니다 :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) 

이것은 모든 NA를 제공합니다.

이것은 분명히 간단한 예입니다. 실제 상황에서는 다양한 형식이 어디에 흩어져 있는지 알 수 없으며 % m/% d/% Y 및 % Y- % m- % d 만 100 % 확신 할 수 없습니다. 누군가가 나에게 A. 어떻게 알았습니까?이 예제에서 guess_formats를 사용하는 방법이나 B. 정규 표현식을 많이 사용하지 않고 lubridate/base R에서 사용하는 것이 더 적절합니다. 감사!

편집 : 나는 또한 parse_date_time을 시도했습니다. 내가 이해하지 못하는 것은 다음은이 예를 들어 작품입니다 :

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

하지만이되지 않습니다 : 데이터의 내 실제 세트에서

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

, 내가 포맷의 순서를 알 수 없습니다, 이것은이 기능에있어 중요한 것으로 보인다.

두 번 편집 : Dur, 알았습니다. 첫 번째 parse_date_time 예에서 Ymd가 있고 두 번째 ... Ydm이 있음을 알 수 있습니다. 계속 진행하십시오.

답변

10

를 호출 할 필요 단지 parse_date_time를 사용

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" 

내부적으로는 를 호출합니다.