使用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
來進行讀取。