2. R 인코딩관련 문제 / 저장 및 불러오기
OS별 인코딩
- Mac과 리눅스 : UTF-8
- Windows : CP949 or Euc-kr
인코딩 문제 해결방법
- 깨진 글자가 확인 될 경우, File > Reopen with encoding을 통해 아래와 같이 설정한다
* R환경을 되도록 UTF-8로 고정시켜놓자.
* windows의 경우, CP949가 default로 설정하기 때문에, 깨지는 것인 MaxOS와 linux에서 온 UTP-8 인코딩이 온 것이 문제임.
문제가 발생한 이유
- Max OS나 Linux에서는 UTF-8로 한글, 중국어, 일본어 등이 인코딩 되어있는 상태에서, 자료가 Windows로 건너오기 때문에 글자가 깨진다.
- 이러한 것을 해결하기 위해서는 UTP-8로 인코딩을 풀어준 뒤 해결하자.
- 코딩으로 해결하려면 아래와 같이, 파일을 읽어 들일 때, encoding = "UTF-8" 인자를 넣어주면 된다.
실습
setwd('c:/users/is2js/R_da/')
#### 데이터 준비 ####
df = data.frame(aa = 1:3,
bb = LETTERS[1:3],
cc = c("가나abc", "다라123", "!@마#$바"))
df
#### 인코딩별 저장하기 ####
write.csv(df, "encoding_test_default.csv", row.names = F)
# 윈도우
write.csv(df, "encoding_test_euc_kr.csv", row.names = F,
fileEncoding = "euc-kr")
write.csv(df, "encoding_test_cp949.csv", row.names = F,
fileEncoding = "cp949")
# 맥, 리눅스
# ***윈도우에서 utf8로 저장하게 되면, excel에서 여는 순간 깨진다.
write.csv(df, "encoding_test_utf8.csv", row.names = F,
fileEncoding = "utf8")
#### UTF-8로 인코딩된 파일을 window에서 읽어오기 ####
# utf8로 저장된 csv를 windows에서 read.csv로 읽으면,, 데이터가 없다고 뜬다.
read.csv("encoding_test_utf8.csv")
# 데이터가 존재함을 알기 때문에, readlins로 한줄씩 읽어보자
# 한줄씩은 읽어지나, 깨져서 나온다.
readLines("encoding_test_utf8.csv")
# 한줄씩 읽을 때, utf-8 인코딩으로서 읽어보자
# *** 저장시에는 fileEncoding = "uff8" / 읽을 시 encoding="UTF-8"
# 그러나 텍스트가... 구분자 등등이 엉망으로 나온다.
readLines("encoding_test_utf8.csv", encoding = "UTF-8")
#### data.table 패키지 - fread()를 이용한 utf8잘 읽어오기 ####
# 1. 설치
install.packages("data.table")
# 2. 사용하기 - data.table + encoding parameter
library("data.table")
fread("encoding_test_utf8.csv", encoding = "UTF-8")
# 3. data.table + encoding함수 로 깨진 칼럼 복구시키기
dd = fread("encoding_test_utf8.csv")
dd
Encoding(dd$cc) = "UTF-8"
dd
# utf-8 과 cp949/ euc-kr 이 섞여있는 경우 --> 포기하자...
'한의대 생활 > └ R studio 중급 문법' 카테고리의 다른 글
6. R Clean code 작성법 (0) | 2018.12.29 |
---|---|
5. 속성 확인 및 변환 (0) | 2018.12.29 |
4. 데이터 저장하기 ( R 기본제공 iris 데이터 가져오기 포함) (0) | 2018.12.29 |
3. 데이터 불러오기 ( readLines()로 구분자 구분시키는 TIP 포함) (0) | 2018.12.28 |
1. R 패키지 설치 (0) | 2018.12.28 |