R에서 '유효하지 않은 멀티바이트 문자열' 에러 발생 시

    > Bio <- read.table("E:/study/R/data/Bio.csv", sep=",", head=TRUE)
    Error in make.names(col.names, unique = TRUE) : 
    '<eb><82><98>?<b4>'에서 유효하지 않은 멀티바이트 문자열이 있습니다

    R에서 read.csv 혹은 read.table로 파일을 읽어올 때 위와 같은 에러가 발생하였다. 원본에 한글이 있어서 생기는 인코딩 문제로 보이며 원본 데이터는 UTF-8 타입으로 다음과 같았다

     

    UTF-8 형의 원본 파일

     

    우선 이것을 해결하는 매우 간단한 방법은 원본 파일의 인코딩을 바꾸는 것이다.

     

    ANSI로 변경한 파일

    이와같이 ANSI로 변경하고 다시 실행해보았다.

     

    > Bio <- read.table("E:/study/R/data/Bio.csv", sep=",", head=TRUE)
    > Bio
       번호 나이  키 체중 BMP FEV  RV FRC TLC Pemax
    1     1    7 109 13.1  68  32 258 183 137    95
    2     2    7 112 12.9  65  19 449 245 134    85
    3     3    8 124 14.1  64  22 441 268 147   100
    4     4    8 125 16.2  67  41 234 146 124    85
    5     5    8 127 21.5  93  52 202 131 104    95
    6     6    9 130 17.5  68  44 308 155 118    80

    이와같이 정상적으로 출력되는 것을 볼 수 있다.

    BUT, 당연히 이건 내가 원하는게 아니다. R 단계에서 처리가 되길 원하는데...

     

    > Bio <- read.table("E:/study/R/data/Bio.csv", sep=",", head=TRUE, encoding="UTF-8")
    > Bio
       번호 나이  키 체중 BMP FEV  RV FRC TLC Pemax
    1     1    7 109 13.1  68  32 258 183 137    95
    2     2    7 112 12.9  65  19 449 245 134    85
    3     3    8 124 14.1  64  22 441 268 147   100
    4     4    8 125 16.2  67  41 234 146 124    85
    5     5    8 127 21.5  93  52 202 131 104    95
    6     6    9 130 17.5  68  44 308 155 118    80
    7     7   11 139 30.7  89  28 305 179 119    65
    8     8   12 150 28.4  69  18 369 198 103   110
    9     9   12 146 25.1  67  24 312 194 128    70
    10   10   13 155 31.5  68  23 413 225 136    95

    이와같이 encoding="UTF-8" 인자값을 추가로 넣어주면, 인코딩 처리하여 읽어온다.

     

    > Bio <- read.csv("E:/study/R/data/Bio.csv", head=TRUE, encoding="UTF-8")
    > Bio
       번호 나이  키 체중 BMP FEV  RV FRC TLC Pemax
    1     1    7 109 13.1  68  32 258 183 137    95
    2     2    7 112 12.9  65  19 449 245 134    85
    3     3    8 124 14.1  64  22 441 268 147   100
    4     4    8 125 16.2  67  41 234 146 124    85
    5     5    8 127 21.5  93  52 202 131 104    95
    6     6    9 130 17.5  68  44 308 155 118    80
    7     7   11 139 30.7  89  28 305 179 119    65

    read.table, read.csv 둘다 마찬가지로 encoding="UTF-8"을 사용하면 된다.

     

     

    반응형

    'Stackoverflow > R' 카테고리의 다른 글

    package or namespace load failed for ‘Hmisc’:  (0) 2020.05.21

    댓글

    Designed by JB FACTORY