증상
R 데이터분석이 처음이다보니 데이터를 불러오는 것만에서도 각종 오류를 만났다.
종합적으로는 인코딩 문제인 걸 알겠는데, 이 문제를 깊이 이해하지는 못하겠다. read.csv의 속성에서 이리저리 encoding, fileEncoding설정을 바꿔갔다. Default text encoding은 UTF-8설정을 유지했다. 그런데 표시되는 오류의 문구만 조금씩 달라질 뿐, 계속 어떤 부분에서 자꾸만 어긋났다. 다음은 내가 만난 오류들이다.
Error in type.convert.default(data[[i]], as.is = as.is[i], dec = dec, : invalid multibyte string at '<ec><84><9c>?<b8> '
Error in make.names(col.names, unique = TRUE) : invalid multibyte string 1
혹시 파일의 첫행에 있는 특수문자가 문제가 되나 싶어서 지우고 시도해봤는데 문제는 풀리지 않았다.
해결 방법 요약
아래의 세 명령을 수행하고 데이터분석을 시작하자.
Sys.getlocale()
Sys.setlocale("LC_ALL", "C")
Sys.setlocale("LC_ALL", "Korean")
해결 과정
결국 열심히 검색해서 해결했다.
사실 자세한 해결원리는 모르겠는데 이 방법으로 하니까 오류가 뜨지 않더라.
Sys.getlocale() #인코딩정보 확인
Sys.setlocale("LC_ALL", "C") #초기 설정으로 변경 (C)
위 두줄은 강제로 현재 언어(인코딩정보)를 삭제하는 과정이다.
- Sys.setlocale에 대한 참고사항:
그리고나서 다시 read.csv한다.
그럼 드디어 Data변수가 정상적으로 들어가는 걸 확인가능하다.
그리고 다시 언어설정을 Korean으로 돌려놓으면 된다고 한다.
나는 위 방법으로 해결해보았다.
일단 해결했으니 계속 진행해봐야겠다.
+
+
일단 이런 문제를 만날 때마다 위 방법을 이용하려 한다.. 일단 조금 찝찝하다.
그런데 또 이해가 가지 않는 것은
위 방법대로 언어초기화를 한 후 fileEncoding 속성을 UTF-8로 넣어 실행하면 invalid input 문제가 다시 뜬다. 분명 csv파일을 저장할 때 파일인코딩 속성을 UTF-8로 저장했는데 왜 그럴까? 혹시 몰라서 EUC-KR로도 넣어봤는데 여전히 같은 문제가 일어난다. 도대체 뭘까? fileEncoding속성 넣기를 권장하는 의견도 있는데 안넣자니 뭔가 찜찜하고 그러네.. 정말 잘 모르겠다. 일단 바쁘니까 차차 해결하는 걸로 하고 계속 하자..
'데이터분석과 머신러닝' 카테고리의 다른 글
R데이터분석 | 분산분석, 사후분석으로 지역별통계량 분석 (0) | 2021.09.15 |
---|---|
R데이터분석 | 일원배치 분산분석 - 그리고 사후분석 (0) | 2021.09.14 |
R데이터분석 | 상위n% 제외하기 (0) | 2021.09.13 |
[데이터분석] 공공데이터 사이트 정리 | 국내 무료데이터 총집합 (0) | 2021.08.20 |
회귀분석 - R데이터분석을 위한 통계학 공부 (0) | 2021.08.16 |