분석가 Step 1. 데이터 분석/R

데이터 입력 오류(인코딩 문제) 해결하기

뚱뿌 2023. 3. 16. 13:08

데이터를 불러오고, 저장하다보면 각종 오류를 만나게 된다. (꼭.. 만난다)

 

그중에서도 단골 손님은 "인코딩 문제"이다.

 

read.csv() 함수를 이용해 csv 파일을 불러오면서, encoding = "UTF-8" / "euc-kr" 로 설정하였다. 

그럼에도 아래와 같은 오류가 계속 발생하면서 파일을 정상적으로 불러오지 못했다.

오류 메시지

이러한 오류는 아래 코드를 통해 해결할 수 있었다. 

그러나 .. 파일을 불러온 후에 인코딩을 재설정 하는 부분에서 또다시 Warning message가 발생하였다.

오류 메시지를 무시하고, 불러온 파일을 확인하였더니 한글이 전부 깨져있었다.

Sys.getlocale() #인코딩정보 확인
Sys.setlocale("LC_ALL", "C") #초기설정으로 변경(C)

data <- read.csv("data_2021.csv")
Sys.setlocale("LC_ALL", "Korean") #재설정
> Sys.getlocale() #인코딩정보 확인
[1] "LC_COLLATE=Korean_Korea.utf8;LC_CTYPE=Korean_Korea.utf8;LC_MONETARY=Korean_Korea.utf8;LC_NUMERIC=C;LC_TIME=Korean_Korea.utf8"
> Sys.setlocale("LC_ALL", "C") #초기설정으로 변경(C)
[1] "C"
> data <- read.csv("data_2021.csv")
> Sys.setlocale("LC_ALL", "Korean") #재설정
[1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.949;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"
Warning message:
In Sys.setlocale("LC_ALL", "Korean") :
  using locale code page other than 65001 ("UTF-8") may cause problems

오류 데이터 정보

 

!!! 이렇게 발생한 오류를 다시 해결하고자 열심히 방법을 찾은 결과, 해결할 수 있었다. 

※ 오류 메시지에 대해 구글링하였더니 약 7,610개의 검색결과가 나타났다. 필자와 같은 경우가 많은 듯하다.

 

오류 문제를 해결하는 것은 간단했다. 

위의 코드에서 [1] "LC_COLLATE=korean_Korea.949; ~~~~~ 이런식으로 나온 문장을 확인할 수 있다. 

이 문장의 의미는 해당 파일의 인코딩을 Korea.949로 설정하라는 것이다. 

 

"Korean.949"로 설정하니 깨졌던 한글이 모두 제대로 들어온 것을 확인할 수 있다.

Sys.setlocale("LC_ALL", "Korean.949") #재설정

str(data)

정상적인 데이터 정보

그러나 !! 이번엔 컬럼명이 없기 때문에, 실제 분석에 필요한 정보만 따로 추출하여 변수명을 설정하였다.

결과를 보면, 총 6,965 행에 대한 6개 변수들의 정보(컬럼명 포함)가 잘 들어온 것을 확인할 수 있다.

data_1 <- data[,c(6,8:12)]
colnames(data_1) <- c("type", "period", "refer", "gu", "names", "type_names")
str(data_1)

 

[참고자료]