1. 程式人生 > >使用R讀取xls與xlsx檔案

使用R讀取xls與xlsx檔案

在資料分析的過程中,第一步就是讀取資料

通常我們遇到的資料是csv格式或者txt格式的資料,這時我們使用系統自帶的read.csv()read.table()就可對這些格式的資料進行讀取,只是讀取時需注意編碼格式。對於大型csv格式的資料(當然小資料也可以),可以使用data.table包中的fread()進行讀取可以極大地提升讀取速度。

但當遇到了Excel表生成的檔案,讀取起來相對就沒有那麼友好。之前的做法是簡單粗暴地直接將我們的xls或xlsx檔案利用Excel轉化為csv檔案後再進行讀取,亦或者直接就用Python使用pandas庫進行處理,然後就在Python中進行分析。

就是由於之前幾次碰壁,使用網上推薦的一些包來進行讀取,但都以失敗告終。不過這次還是決定解決這個“頑疾”,對xls與xlsx這兩種檔案用R進行讀取。

1. ROOBC

這個包中有函式可以讀取xlsx格式的檔案,但對於現在的我們而言,絕大多數人的電腦都不能使用這個包,因為其只能用於32位系統的Windows,所以這裡不對這個包進行贅述。

2. xlsReadWrite

只能從GitHub中獲得,CRAN上還沒有,也不進行過多的贅述。

3. XLConnect

要依賴java,並且對於大資料情況讀取非常慢。但實際上自己使用的時候,安裝了java後,還是沒法使用這個包。可能是某些步驟設定出現了問題。

若有童鞋對前面的三個包非常感興趣,其詳細的用法可以參考前面的參考網址。

4. xlsx

這個包是目前用的最多,也是R中可以說最好用的讀取Excel檔案的利器。

下面專門對其進行介紹。首先我們先說明這個包的依賴檔案,不僅僅只是依賴R中的一些包,而是需要單獨安裝java。

1)裝Java

我們按照指引選擇預設路徑安裝,安裝完成後,在C:\Program Files下出現了Java檔案,說明安裝成功。(注:有些地方說需要將Java檔案新增到全域性變數中,後面的xlsx包才能調取成功,但其實在這兩天的實際安裝中發現,自己的電腦並不需要,可能得看臉。)

2)裝xlsx

安裝xlsx其實沒什麼好說的,就正常安裝,然後它會自動將所需要的rjava等依賴庫,最後成功安裝xlsx庫。

3)實際使用

最後我們就能直接使用啦,下面來講一下其程式碼格式:

library(xlsx)
dat <- read.xlsx("data.xlsx", sheetName = "Sheet1", encoding = 'UTF-8')

一個標準的資料讀取如上所示,下面將幾個常用的引數:

  • "data.xlsx":表示讀取資料的名稱。
  • sheetName:表示讀取表中表的名稱,通常第一個就是Sheet1
  • encoding:這個在讀取中文資料的時候是一定要加上的,不然讀取資料會出現亂碼。
  • sheetIndex:表示讀取檔案中第幾個表,sheetIndex = 1表示讀取檔案中第一個表。需要特別注意:當檔案中我們的表明為中文字時,不能使用類似sheetName = "表1"進行讀取,即使加上encoding = 'UTF-8'也會出現讀取錯誤,這時就需要使用sheetIndex來進行讀取。