R語言處理含中文Excel文件時,由於編碼的不一致,總會出現各種各樣的問題。例如,使用xlsx包讀取xlsx文件時,若內容中含有中文,就會出現亂碼,甚至會報錯。
例如使用這個表格:
data1 <- read.xlsx("人員信息.xlsx",sheetName="Sheet1",header=T) #轉換爲UTF-8編碼
輸出結果:
> data1
濮撳悕 鎬у埆 AGE 鑱屼綅
1 灝忔槑 鐢<b7> 21 緇忕悊
2 鑰佺帇 鐢<b7> 22 鍓粡鐞<86>
3 寮犱笁 濂<b3> 23 鎶€鏈憳
4 鏉庡洓 濂<b3> 24 欏鵑棶
5 Tom M 25 Professor
6 Jack M 26 Assistant
7 Amy Bat F 27 Clerk
有些數據甚至會直接報錯。
Error in make.names(vnames, unique = TRUE) : 多字節字符串6有錯
那麼應該如何解決呢?
對於這種問題,只需要在讀入數據時,指定編碼屬性encoding=‘UTF-8’。
data1 <- read.xlsx("人員信息.xlsx",sheetName="Sheet1",header=T, encoding='UTF-8') #轉換爲UTF-8編碼
這樣就可以讀取成功了。
> data1
姓名 性別 AGE 職位
1 小明 男 21 經理
2 老王 男 22 副經理
3 張三 女 23 技術員
4 李四 女 24 顧問
5 Tom M 25 Professor
6 Jack M 26 Assistant
7 Amy Bat F 27 Clerk
這樣就解決了亂碼的問題。
此外,對於如果讀取csv文件出現亂碼,但文件本身沒有問題的情況,可以使用Notepad++軟件打開,點擊編碼-轉爲ANSI編碼後保存。再次使用R讀取csv即可。