태그 보관물: 한글

Mac 용 R에서 잘 읽지 못 하는 한글 파일을 잘 읽는 방법

한국에서는 워낙 윈도우가 압도적으로 사용되는 곳입니다. 그래서 맥을 사용하는 사람 입장에서는 윈도우에서 만든 기본적인 자료, txt나 csv 형식 자료를 읽는데 가끔 문제가 생기기도 합니다. 물론 맥에서 작업하던 파일을 윈도우에 가져와 작업하려면 문제가 많이 발생합니다.

R을 사용할 때도 문제가 많이 생깁니다. 이는 파일에 들어가는 글자를 어떤 형식으로 구성하느냐 하는 문제, 즉 인코딩 문제 때문입니다. 일반적으로 윈도우는 euc-kr를 사용하고, 반면에 맥이나 리눅스는 utf-8을 사용하기 때문입니다.

이 문제를 극복하기 위한 여러가기 꼼수가 있었지만, R에서 이를 처리하는 함수를 하나 만들어서 처리하는 방식이 있어서 소개하고자 합니다. 이 방법은 r에서 한글문서 열때 인코딩 문제 에 소개된 것입니다. 뭐 이 글의 아이디어를 제가 했기 때문에 여기에 소개해도 무방할 것 같네요 ^^;

뭐 사용하는 방법은 간단합니다. 우선 이 함수를 사용하기 위해서 library(readr)을 입력합니다. 만약 에러가 난다면, install.packages("readr”)이라고 실행해서 패키지를 설치합니다. 패키지가 설치가 안 되면 R을 최신 것으로 설치하시면 됩니다. 그리고 다음과 같이 함수를 입력합니다. 전체 과정은 다음과 같이 하시면 됩니다.


library(readr)
read.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)
}

view raw

read_any.R

hosted with ❤ by GitHub

R을 많이 사용하신 분은 어떻게 사용할지 감을 잡으셨겠지만, 저와 같은 초보자를 위해서 한 번 사용해보겠습니다. 우선 다음 링크를 눌러서 사용할 샘플자료를 다운 받으세요! 바로 저장하시면 됩니다.

이 자료에 들어 있는 2017_7_8_KBO_win.csv 파일을 R에서 자료를 읽을 수 있는 폴더에 넣으세요. R에서 dir()을 입력했을 때, 위 파일 이름이 있는지 확인하세요.

맥에서 이 파일을 읽는 진행과정은 다음과 같습니다. 처음에는 read.csv()을 사용해서 읽는데 실패했던 파일이 read.any()을 이용해서는 성공하네요.


> temp_kbo <- read.csv("2017_7_8_KBO_win.csv", header = TRUE)
Error in make.names(col.names, unique = TRUE) :
'<bc><f8><c0><a7>'에서 유효하지 않은 멀티바이트 문자열이 있습니다
> library(readr)
> read.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)
+ }
> temp_kbo <- read.any("2017_7_8_KBO_win.csv", header = TRUE)
> head()
Error in head.default() : 기본값이 없는 인수 "x"가 누락되어 있습니다
> temp_kbo <- read.any("2017_7_8_KBO_win.csv")
> head(temp_kbo)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
1 순위 선수명 팀명 AVG G PA AB R H 2B 3B HR TB RBI SAC SF
2 1 김선빈 KIA 0.38 79 303 271 49 103 23 0 2 132 47 2 4
3 2 최형우 KIA 0.37 80 359 289 66 107 23 3 20 196 76 0 4
4 3 나성범 NC 0.359 61 264 237 53 85 20 1 13 146 51 0 1
5 4 김태균 한화 0.353 61 268 232 34 82 13 0 10 125 57 0 4
6 5 서건창 넥센 0.353 78 347 303 52 107 17 2 4 140 49 0 3
> temp_kbo <- read.any("2017_7_8_KBO_win.csv",header = TRUE)
> head(temp_kbo)
순위 선수명 팀명 AVG G PA AB R H X2B X3B HR TB RBI SAC SF
1 1 김선빈 KIA 0.380 79 303 271 49 103 23 0 2 132 47 2 4
2 2 최형우 KIA 0.370 80 359 289 66 107 23 3 20 196 76 0 4
3 3 나성범 NC 0.359 61 264 237 53 85 20 1 13 146 51 0 1
4 4 김태균 한화 0.353 61 268 232 34 82 13 0 10 125 57 0 4
5 5 서건창 넥센 0.353 78 347 303 52 107 17 2 4 140 49 0 3
6 6 이대호 롯데 0.351 79 333 302 44 106 7 0 16 161 60 0 0

view raw

read_any_ex.R

hosted with ❤ by GitHub

폰트 광고에서 한글에 대해서 한수 배우다.

이제서야 채점이 끝나 오래간만에 도서관에서 잡지를 보다가, 한글에 대한 광고를 보게 되었습니다. 라디오, TV, 잡지등 많은 매체를 보거나 듣다 보면, 수많은 광고들이 정신을 어지럽게 만들지만, 꼼꼼히 잘 들여다보면 쓸만한 정보가 꽤 있습니다. 『디자인』이라는 잡지에 11, 12월호에 유익한 광고가 있어서 소개합니다.

우선 12월호에 나온 ‘타이포 그래피 Tip 02: 가독성 높이는 방법’부터 보겠습니다. 가독성을 높이기 위해서서는 글자에 관련된 다양한 것을 조절해야 한다고 합니다. 단어사이가 좋으면 단어 구별이 잘 안 되면 단어를 잘 구별할 수 없고, 반대로 너무 넓으면 같은 문장으로 보이지 않을 수 있다고 하네요.

다음으로는 11월호에 나온 ‘타이포 그래피 Tip 01: 글꼴의 특성을 판별하는 방법’에 대한 이야기를 정리해보겠습니다. 한글꼴 명조에서 ‘ㅎ’자가 가장 많은 개성을 가지고 있다고 합니다. 꼭지점, 가로 줄기, 동굴이응과 상투의 모양에서 각 글꼴의 개성이 드러 난다고 합니다. 그래서 많이 쓰는 글꼴을 다음과 같이 살펴봤습니다. 쓸 때는 잘 몰랐는데 정말로 많이 다르네요.

hangul fonts