R로 csv파일을 불러오다보니 다음과 같은 오류를 마주했다.


> temp <- read.table('Auction_master_train.csv', header=T, sep=',')

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 

  line 1 did not have 41 elements.




우리가 볼 수 있는 대부분의 데이터는 직사각형 형태를 띄고있다.

즉, 모든 행은 같은 개수의 자료 수를 가지고(테이블의 열의 수만큼),

    모든 열 또한 같은 개수의 자료 수를 가진다.(테이블의 행의 수만큼)


위의 명령어는 어떤 데이터를 콤마(,) 를 기준으로 인식해 불러오라는 의미이다.

그런데 자료가 콤마로 구분되어있기는 하지만 자료 안에 정보에도 콤마가 쓰이는게 문제였다.

그래서 R은 특정 행에서 다른 행보다 많은 자료의 개수를 가진다고 인식했으며, 오류라고 출력했다.


header의 개수가 41개인 반면, 첫번째 열은 41개의 자료를 가지지 않는다는 것이다.


최대한 R 내부에서 해결하려고 했으나... 귀찮아서 다른 방법으로 임시 해결하고 넘어가기로 했다.


임시적인 해결 방법은 엑셀에 csv파일을 불러와 자료 안에 콤마로 기록되어있는 부분은 다른 문자로 대체하는 것이다.

다행히 내가 가지고 있던 데이터에는 언더바(_)가 전혀 사용되지 않아 콤마를 언더바로 모두 대체해서 사용했다.

그렇게 read.table( )을 사용하니, 예쁜 직사각형 테이블이 등장했다~. 편-안-...


생각해보면 전에 내가 시험칠 때, 겪었던 문제 또한 이런 것이었던 것 같다.

오랫동안 궁금했든데, 원인을 찾게 되어 다행이다.

물론 내가 사용한 방법은 데이터가 너무 커져 엑셀로 불러올 수 없게된다면 사용하기 힘든 임시방편이다.

다음에 더 편한 방법을 발견하게되면 이 포스팅을 수정하지 않을까...ㅎ



참고로 csv파일을 엑셀로 실행할 때, 또한 인코딩 문제로 한글이 깨질 수 있다.

그때는 메모장으로 csv파일을 실행한 후, "다른이름으로 저장"에서 인코딩을 "ANSI"로 바꾸고 저장한 후, 엑셀로 실행하면 된다.


이상!

'분석' 카테고리의 다른 글

파이썬을 활용한 업무자동화  (0) 2020.06.02
파이썬 이미지 OCR  (0) 2020.05.10
[spark] 스파크 공부하기  (0) 2020.02.13
분석 경험 정리하기  (0) 2019.04.22
Erlang  (0) 2019.04.04

+ Recent posts