[問題] R匯入xlsx中文問題

作者: lichungtsai (海灘拖鞋)   2017-04-26 21:18:54
各位大家好
想請教一個R匯入xlsx但裏頭有中文的問題
=====================================================
其中有幾個限制:
1.原始的raw data在單一.xlsx中有許多個sheet,所以希望能使用一些能直接讀取xlsx的packages來讀取,盡量不要手動轉csv檔
2.原始的raw data參雜簡體中文、繁體中文,所以那個packages希望有可以做encoding = UTF-8或Big5之類的函式
=====================================================
那麼我目前試過了三種方法:
第一個:
dtn <- 'launcher_data_2017-01-10-2017-01-17.xlsx'
library(readxl)
launcher_data_2017_01_10_2017_01_17 <- read_xlsx(dtn, sheet = 2)
不過因為這個package他沒辦法使用encoding = 'UTF-8'之類的函式,所以資料呈現亂碼狀態
=====================================================
第二個:
dtn <- 'launcher_data_2017-01-10-2017-01-17.xlsx'
library(openxlsx)
app_1 <- read.xlsx(dtn, sheet = 1)
不過因為這個package他也沒辦法使用encoding = 'UTF-8'之類的函式,所以資料也呈現亂碼狀態
=====================================================
第三個:
options(java.parameters = "-Xmx8000m")
dtn <- 'launcher_data_2017-01-10-2017-01-17.xlsx'
library(xlsx)
app_1 <- read.xlsx(dtn, sheetIndex = 1, encoding = 'UTF-8')
我已經用第一行增加記憶體
但依然出現了
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
java.lang.OutOfMemoryError: GC overhead limit exceeded
似乎是記憶體不足的問題
=====================================================
第四個:(我最不希望的手動轉csv)
app_1 <- read.csv('launcher_data_2017-01-10-2017-01-17.csv', encoding = 'UTF-8')
出現了
Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, numerals = numerals, :
invalid multibyte string at '<e6><9c><ac>?啣<ba>'
我到現在還不懂這代表什麼
總之就是似乎就算手動轉csv檔,再用encoding = 'UTF-8'也是不可行
=====================================================
不曉得這要怎麼解決?
作者: lichungtsai (海灘拖鞋)   2017-04-26 21:20:00
第一和二個方法因為沒有UTF-8的轉換機制,所以都呈現亂碼
作者: celestialgod (天)   2017-04-27 00:06:00
https://github.com/tidyverse/readxl/issues/125看起來readxl已經解決這個問題了如果沒有檔案,我沒辦法測試,我自己創的可能不符

Links booklink

Contact Us: admin [ a t ] ucptt.com