2017-01-31 3 views
0

csv 파일에서 숫자 목록을 읽었습니다. 731961,731962,731966,731967,731968과 같은 숫자가 포함되어 있으며 2004-01-15,2004-01-16,2004-01-20,2004-01-21,2004-01-22에 해당해야합니다.일련 번호를 올바른 날짜로 변환하지 못했습니다.

그러나 R에서 숫자를 변환하려고 시도했을 때 결과 날짜가 잘못되었습니다 (예 : as.Date(731961,origin="1900-01-01") --> "3904-01-17").

여기서 내가 뭘 잘못 했니?

+0

'as.Date'는 정수로 지정된 출발지에서 일수를 나타냅니다. 1900 년부터 731 + 1000 일은 약 2000 년입니다. – lmo

+2

origin = "0-01-01"을 시도하십시오. – Haboryme

답변

1

의견에 이어 다음 날짜의 출처가 잘못되었다는 것이 문제입니다. 당신은 당신이 날짜를 계산하면 것을보고, 그들이 얼마나 멀리 볼 수 있습니다

inDates <- c(731961,731962,731966,731967,731968) 
correctDates <- as.Date(c("2004-01-15","2004-01-16","2004-01-20","2004-01-21","2004-01-22")) 

wrongDates <- as.Date(inDates, origin = "1900-01-01") 

difftime(wrongDates, correctDates, units = "days") 

그들은 기원이 잘못된 것을 제안, 정확한 날짜으로부터 693,962일에 의해입니다. @Haboryme로 원점을 0-01-01으로 설정하면 가까워 지겠지만 아직 하루는 벗어났습니다. 내 생각 엔 도일 오류가 있거나 일련 번호 0의 ​​1 월 1 일이 0 대신 1이되기를 원합니다. 기원을 기원 날짜로 설정할 수 없습니다 (아마도 방법이있을 수 있지만 내가 주변에서 일을 발견했을 때, 나는 그것을 잡았다). 그래서, 입력 날짜에서 하나를 뺀 다음 원점을 설정합니다.

as.Date(inDates - 1, origin = "0000/01/01") 

그러나 이것은 대안을 제시합니다. 이와 같이 일련 번호가 지정된 일련의 날짜가 있고 원산지가 변경된 경우 원점을 찾기 위해 놀아 보면 뒤쪽에 통증이 있습니다. 그러나 일부 날짜를 알고 있고 모두 동일한 출처를 사용하고 있음을 확인할 수있는 경우 동일한 출처를 사용하는 한 올바른 날짜를 얻으려면 각 새 입력에서 위의 offBy을 뺄 수 있습니다.

as.Date(inDates - as.numeric(offBy[1]), origin = "1900-01-01") 

정확한 날짜도 제공합니다.

관련 문제