看板 R_Language 關於我們 聯絡資訊
各位大家好 想請教一個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'也是不可行 ===================================================== 不曉得這要怎麼解決? -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.227.0 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1493212736.A.452.html
lichungtsai: 第一和二個方法因為沒有UTF-8的轉換機制,所以都呈現 04/26 21:20
lichungtsai: 亂碼 04/26 21:20
celestialgod: https://github.com/tidyverse/readxl/issues/125 04/27 00:06
celestialgod: 看起來readxl已經解決這個問題了 04/27 00:07
celestialgod: 如果沒有檔案,我沒辦法測試,我自己創的可能不符 04/27 00:07