Search

2018년 11월 28일 수요일

[R] [function] R에서 한글 csv 파일 읽기 - euc-kr, utf-8, encoding 처리 (readr)

#1. 들어가기

R에서 csv파일을 열 때, 한글이 섞인 문서를 열다 보면 알 수 없는 외계어와 함께 파일을 제대로 불러올 수 없는 현상이 있다.
프로그래밍을 처음 접한 사람들에게는 생각보다 당혹스러운 현상인데, 나중에 encoding을 알게되면 자연스럽게 해결되는 문제이다.(라고 쓰고, 한글을 쓰게되면 평생 따라다니는 귀찮은 문제이다. 라고 읽습니다...)


#2. 해결하기

보통의 경우에는 한글이 포함된 csv파일이더라도 utf-8형태로 저장됐다면, R에서 읽는데 문제가 없다. 하지만, excel등에서 읽을 때는 외계어를 만날 수 있다... 반대로, euc-kr로 저장됐다면 excel에서 읽는데 문제가 없지만, R에서는 읽히지 않을 수 있다.
그래서 어떠한 인코딩 형태이던지 우리가 읽을 수 있게끔 read.csv() 펑션을 만들고 싶은데, 때마침 해당 내용을 잘 정리한 블로그를 발견하여 참조를 달고 함수를 그대로 가져와봤다.
참조 : http://philogrammer.com/2017-03-15/encoding/

#2-1. 함수 생성

install.package("readr")
library(readr)
read.csv.any <- function(text, sep = "", ...) {
  encoding <- as.character(guess_encoding(text)[1,1])
  setting <- as.character(tools::file_ext(text))
  if(sep != "" | !(setting  %in% c("csv", "txt")) ) setting <- "custom"
  separate <- list(csv = ",", txt = "\n", custom = sep)
  result <- read.table(text, sep = separate[[setting]], fileEncoding = encoding, ...)
  return(result)
}


#2-2. 함수 사용

my_csv_file <- read.csv.any("file/path/csv_file.csv", header = TRUE)


댓글 없음:

댓글 쓰기