Kicarussays

(R) rread_csv 파라미터 정리 및 parsing failure 해결 방법 본문

Statistics (R)

(R) rread_csv 파라미터 정리 및 parsing failure 해결 방법

Kicarus 2020. 8. 26. 21:31

 

R을 이용한 프로젝트를 한 가지 진행중에 있습니다.

read_csv를 사용해서 데이터를 불러오는 데 자꾸 오류가 생겨서 구글링을 해보며 얻은 해결 방법과, read_csv의 파라미터들에 대해 써볼까 합니다.

 

 

 

0. 문제

위의 콘솔창을 보면 read_csv로 파일을 불러왔는데 parsing failure라는 메시지와 함께 25개 행을 불러오는데 실패합니다. expected를 보면 원하는 자료형이 Boolean인데에 비해 실제 데이터는 날짜 데이터이기 때문이었습니다.

 

그런데 실제로 제가 불러오려던 데이터의 해당 컬럼은 날짜 데이터만 있었습니다. 위의 사진에서

 

.default = col.date()

 

로 쓰여진 부분을 보면, 데이터를 불러오는 디폴트값이 날짜데이터로 설정이 되어있음에도 a2yr_cond2, a2yr_cond9 컬럼의 데이터를 T/F 자료형으로 불러오려다 에러가 발생한 것이죠.

 

왜 이런가 구글링을 열심히 해본 결과 이유를 찾게 되었습니다.

 

 

 

 

1. 자료형 인식은 1000번 째 행까지!

 

제가 불러오려던 csv파일의 a2yr_cond2, a2yr_cond9 컬럼은 1000번 째 행까지 데이터가 없었습니다.

read_csv("csv파일 이름")으로 csv파일을 불러오면 각 컬럼마다 1000번 째 행까지 데이터를 탐색하는데, 그 중 식별된 데이터의 자료형으로 해당 컬럼의 자료형을 결정하게 됩니다. 하지만 제가 불러오려던 csv파일의 경우 a2yr_cond2, a2yr_cond9 두 컬럼에 1000행까지 데이터가 없었기 때문에 자료형을 임의로 col_logical(), 즉 T/F 값으로 결정한 것이죠.

자료형을 T/F 값으로 결정한 후, 마저 데이터를 불러오는데 날짜 데이터가 들어오니 읽어들일 수 없었던 것입니다.

 

 

결론 먼저 이야기하자면, read_csv(data= , guess_max= )처럼 read_csv안의 guess_max 값을 데이터가 있는 행까지로 설정해주면 됩니다. 예를 들어, 에러가 발생한 컬럼의 7000번 째 행부터 데이터가 있다면, guess_max = 7100 이런 식으로 설정해주면 문제가 해결됩니다.

 

 

 

2. read_csv의 파라미터

에러를 해결하려고 구글링을 하며 read_csv의 파라미터에 대해 잘 정리해둔 블로그를 하나 찾았습니다.

https://gomguard.tistory.com/228

 

[tidyverse] readr 패키지 사용법 (read_csv, write_csv)

readr 패키지 readr 패키지는 데이터사이언스를 위해 구성된 Tidyverse 라는 패키지 중 하나입니다. readr 패키지는 csv 나 tsv, fwf 같은 격자형의 데이터를 쉽고 편하게 읽기 위해 만들어졌습니다. 본 포�

gomguard.tistory.com

해당 블로그에서 guess_max 외에 많은 파라미터들에 대한 설명을 볼 수 있습니다.

 

 

 

 

Comments