2014-03-05 5 views
3

.csv 파일에서 가져온 날짜를 계산하는 데 문제가 있습니다. 내가 뭘하고 싶은건 DateClosed 요소에서 해당 날짜를 가져 와서 날짜 필드 (a)에 날짜를 생성합니다. 예 : a = 203 DateClosed-203에 해당하는 날짜를 원합니다. 그러나 아래에 나열된 코드에 문제가 있습니다.날짜가 요소로 잘못 변환 됨

DateClose가 하나의 요소입니다.

> head(DateClosed) 
[1] 7/30/2007 12/12/2007 5/8/2009 6/24/2009 6/24/2009 2/29/2008 
165 Levels: 1/12/2010 1/15/2011 1/15/2013 1/17/2009 1/18/2008 1/19/2012 1/2/2013 1/21/2013 1/22/2010 1/24/2013 1/26/2014 ... 9/7/2010 
> head(as.Date(DateClosed,format="%m/%d/%y")) 
[1] "2020-07-30" "2020-12-12" "2020-05-08" "2020-06-24" "2020-06-24" "2020-02-29" 

head(as.Date(DateClosed,format="%m/%d/%y"))-203 
[1] "2020-01-09" "2020-05-23" "2019-10-18" "2019-12-04" "2019-12-04" "2019-08-10" 

203 일을 올바르게 뺍니다. 그러나 어떤 이유로 인해 잘못된 날짜를 읽습니다.

+0

당신의 문제는 재현되지 않습니다. 당신은'as.Date'에 인자를 전달하기 전에 그 인자를 문자로 강요하려고 했습니까? –

답변

6
DateClosed <- factor(c("7/30/2007","12/12/2007", "5/8/2009")) 
as.Date(DateClosed, format="%m/%d/%Y") 

는 생산 :

[1] "2007-07-30" "2007-12-12" "2009-05-08" 

을 주목 format PARAM의 수도 "Y". 소문자 "y"는 2 자리 연도이므로 as.Date은 연도 토큰의 처음 두 자리 ("20")를 읽고 그 중 마지막 두 자리를 나타내는 것으로 가정하고 현재 날짜의 세기를 더합니다 (또한 "20")이므로 2020 년에 날짜가 정해집니다.

0

lubridate 패키지를 사용하면 조작이 매우 쉬워집니다.

mdy(factor(c("7/30/2007","12/12/2007", "5/8/2009"))) 

"2007-07-30 UTC" "2007-12-12 UTC" "2009-05-08 UTC" 

또는 같은 패키지 parse_date_time를 사용하여 :

parse_date_time(factor(c("7/30/2007","12/12/2007", "5/8/2009")),c('mdY')) 
[1] "2007-07-30 UTC" "2007-12-12 UTC" "2009-05-08 UTC"