R 에서 외부 데이터 불러오기

R 에서 외부 데이터 불러오기

How to solve eof within quoted string

개요

R 은 기본적으로 통계학을 위해 태어난 언어기 때문에 데이터의 입력 역시 편리하게 되어있다.

read.table(file, header = FALSE, sep = "", na.strings = "NA", fileEncoding = "")

함수 소개

read.table()은 데이터 테이블을 불러들이는 함수로써 위와 같이 여러가지 유용한 옵션을 제공한다. 옵션자체는 더 많이 있지만, 자주 쓰이고 반드시 알아두어야할 것을 추린 것이다. 다음의 설명들을 참고하자:

  • (1) header: 첫줄의 취급에 대한 옵션이다. header=T로 두면 별도의 조작 없이 첫번째 줄을 데이터에서 제외하고 열의 이름으로 지정해준다. 디폴트는 header=F인데, 어지간한 데이터는 디폴트 그대로 쓸 일이 없다.
  • (2) sep: 구분자에 대한 옵션이다. 많은 데이터가 주로 csv(콤마로 구분된 데이터, Comma Separated Value format)로 저장되므로 보통은 read.csv()를 쓰게 된다. read.csv()는 기본적으로 sep = ','이 디폴트기 때문에 별도로 건드릴 필요가 없어서 조금이나마 코드가 깔끔해진다. 그런데 간혹 read.table()을 그대로 쓰거나 그 외에도 탭이나 슬래쉬로 구분된 경우 등 종종 쓸 일이 있다. 데이터를 불러들였는데 한 열에 지저분하게 \t(탭)이 덕지덕지 붙어 불러들여졌다면 백퍼센트 이 문제다.
  • (3) na.strings: 결측치에 대한 옵션이다. 교과서에 나오는 예제가 아니라 어디선가 가져온 데이터라면 워낙 정리를 엉망으로 해놔서 결측치가 넘쳐난다. 연속형 변수에 문자가 있다는 건 십중팔구 결측치를 나타내고, 이들을 핸들링하지 못하면 데이터 처리에 애를 먹게 된다. 불러들일 때부터 결측치로 분류하고나면 그 뒤로는 NA로 나타나 깔끔하게 정리할 수 있으므로 자주 사용한다. 참고로 na.strings=c("a","b","c")와 같이 복수의 문자를 벡터로 넘겨줌으로써 여러 종류의 결측치 표현에도 대응할 수 있다.
  • (4) fileEncoding: 불러들인 파일의 인코딩에 대한 옵션이다. 컴퓨터 전공자들은 C 나 파이썬에서 보다 일반적인 ‘데이터’를 다루지만 통계를 먼저 배운 사람들은 이런 부분을 경시하는 게 사실이다. 까놓고 말해 자주 쓰는 건 아니지만, 그래서 몰라도 된다고 하기엔 의외로 뒷통수 맞을 일이 많으므로 꼭 알아두는 게 좋다. 문제가 발생해도 당황하지 않고 데이터 파일의 인코딩을 확인한 후 입력하면 깔끔하게 해결된다.

에러: EOF within quoted string

20180422\_213714.png

한편 빅데이터를 불러들이다보면 용량이 너무 크다보니 위와 같은 경고 메세지가 뜰 수 있다. 이럴 땐 옵션에서 quote=""만 추가해주면 간단하게 해결된다. 그러나 좋은 해결법은 아예 더 좋은 함수를 사용하는 것이다. 문제의 원인이 잘못된 데이터인 경우보다는 잘못된 사용자인 경우가 훨씬 더 많고, 솔직히 당신은 후자임을 명심하자.

댓글