read.xlsx 열에 날짜가 아닌 경우 날짜 읽기 오류
그xlsx
패키지가 날짜를 잘못 읽고 있습니다.저는 여기 있는 모든 유사한 Q를 읽고 인터넷에서 스카우트를 했지만 열에 날짜가 아닌 데이터가 있으면 출처가 변경되는 이 특정 행동을 찾을 수 없습니다.
드롭박스에서 얻을 수 있는 작은 Excel 스프레드시트가 있습니다.
https://www.dropbox.com/s/872q9mzb5uzukws/test.xlsx
세 개의 행, 두 개의 열이 있습니다.첫 번째는 날짜, 두 번째는 숫자입니다.세 번째 행에는 날짜 열에 "총계"가 있습니다.
만약 내가 처음 두 줄에서 읽는다면,read.xlsx
그리고 첫 번째 열이 날짜라고 말하고 다음과 같이 작동합니다.
read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"),endRow=2)
X1 X2
1 2014-06-29 49
2 2014-06-30 46
그것들은 정말로 스프레드시트에 있는 날짜들입니다.세 행을 모두 읽으려고 하면 뭔가 잘못됩니다.
read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"))
X1 X2
1 2084-06-30 49
2 2084-07-01 46
3 <NA> 89251
Warning message:
In as.POSIXlt.Date(x) : NAs introduced by coercion
정수로 읽으려고 하면 다른 정수가 표시됩니다.
> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"),endRow=2)
X1 X2
1 16250 49
2 16251 46
> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"))
X1 X2
1 41819 49
2 41820 46
3 NA 89251
첫 번째 정수는 다음을 사용하여 올바르게 변환됩니다.as.Date(s1$X1,origin="1970-01-01")
(Unix epoch) 및 두 번째 정수는 다음을 사용하여 올바르게 변환됩니다.as.Date(s2$X1, origin="1899-12-30")
(Excel epoch).1970년을 사용하여 두 번째 로트를 변환하면 2084년 날짜가 나옵니다.
그래서: 제가 뭔가 잘못하고 있나요?정수로 읽는 것이 가장 좋으며, NA가 있으면 Excel epoch를 사용하여 변환하고 그렇지 않으면 Unix epoch를 사용하는 것이 좋습니까?아니면 그것은 버그인가요?xlsx
패키지?
xlsx 버전은 버전: 0.5.1입니다.
날짜는 정수로 읽을 수 있으며 나중에 다음을 사용하여 날짜로 변환할 수 있습니다.openxlsx::convertToDate()
기능.
여기 더 보기
XLConnect
꽤나 달콤한 일을 처리할 수 있습니다.
test <- readWorksheetFromFile( "~/Downloads/test.xlsx", sheet = "Sheet1", header = FALSE )
test
Col1 Col2
1 2014-06-29 00:00:00 49
2 2014-06-30 00:00:00 46
3 Grand Total 89251
문제는 분명합니다. 첫 번째 열은 혼합형입니다.character
그리고.POSIXct
.XLConnect
각 셀을 정확하게 읽을 수 있지만 열의 모든 셀을 가장 일반적인 유형으로 캐스팅합니다.character
이 경우에는
str(test)
'data.frame': 3 obs. of 2 variables:
$ Col1: chr "2014-06-29 00:00:00" "2014-06-30 00:00:00" "Grand Total"
$ Col2: num 49 46 89251
당신이 겪고 있는 문제는 엑셀이 1월 0일부터 1900년까지의 일수를 저장하고 있다는 것이고, 그것은 R이 엑셀 파일에서 읽고 있는 숫자입니다.R로 변환할 때는 1월 1일부터 1970년까지의 일수를 기준으로 변환하는 것입니다.그 둘 사이의 일수를 먼저 빼면 효과가 있을 겁니다.
언급URL : https://stackoverflow.com/questions/25158969/read-xlsx-reading-dates-wrong-if-non-date-in-column
'your programing' 카테고리의 다른 글
PLS-00103: 다음 중 하나를 예상할 때 "파일 끝" 기호가 발생했습니다.; (0) | 2023.06.11 |
---|---|
여러 벡터에서 공통 요소를 찾는 방법은 무엇입니까? (0) | 2023.06.11 |
리눅스 기반 서버에서 ASP.Net 실행 (0) | 2023.06.11 |
서명된 정수 산술 오버플로를 정의되지 않은 상태로 유지하는 것을 정당화할 수 있는 의미 있는 통계 데이터가 있습니까? (0) | 2023.06.11 |
Python 패키지가 설치되어 있는지 확인합니다. (0) | 2023.06.11 |