在 R 中讀取 xlsx 檔案

Gustavo du Mortier 2023年1月30日
  1. 讓使用者指定要匯入的檔案
  2. 在 R 中使用 openxlsx 庫讀取 xlsx 檔案
在 R 中讀取 xlsx 檔案

從 Excel 電子表格中獲取資料並將其匯入 R 中,最常見的方法是使用 Excel 將資料儲存為更傳統的格式,如 .csv。但如果需要反覆匯入 xlsx 檔案,則首選更快捷的方案,比如使用一個包直接將 Excel 檔案匯入 R 中。

R 中很多包都有讀取 xls/xlsx 檔案的功能。其中一個就是 readxl。這個包的外部依賴性比其他包少,因此幾乎可以輕鬆安裝在任何作業系統中。將它新增到你的 R 環境中的最直接的方法是用下面的命令安裝整個 tidyverse 庫。

install.packages("tidyverse")

但由於它不是一個核心的 tidyverse 庫,它仍然需要用 library(readxl) 命令明確載入。然後你就可以用 read_excel 函式匯入一個 Excel 檔案,像這樣。

MySheet <- read_excel("ExcelFile.xlsx")

在前面的例子中,我們將一個名為 ExcelFile.xlsx 的電子表格內容匯入到一個名為 MySheet 的 Dataframe 中。

讓使用者指定要匯入的檔案

如果事先不知道 Excel 檔案的位置,想讓使用者選擇要讀取的檔案,可以使用 file.choose() 代替明確指定檔案路徑。

MySheet <- read_excel(file.choose())

read_excel() 函式還有其他引數,可以指定一個特定的表來匯入,或者指定一個代表 NAs 的值來代替空白單元格。在本例中,我們匯入一個名為 data 的工作表,並指定內容為 NA 的單元格將被解釋為 NAs

MySheet <- read_excel("ExcelFile.xlsx", sheet = "data", na = "NA")

在 R 中使用 openxlsx 庫讀取 xlsx 檔案

另一個可以用來將 Excel 檔案讀到 R 中的軟體包是 openxlsx。這個包簡化了 xlsx 檔案的讀寫,和 readxl 一樣,不依賴 Java、Perl 或其他外部庫。使用 Rcppopenxlsx 即使對巨大的檔案也能提供快速的讀寫時間。這個庫對 xlsx 檔案工作得很好,但它不支援舊的 xls 檔案。

Openxlsx 提供了 read.xlsx 函式,用從匯入檔案中讀取的資料建立一個 Dataframe。它有很多選項,可以指定要匯入的區域是否包含行名和列名,要匯入的工作表的名稱或編號,要匯入的行和列,等等。

在下面的例子中,我們安裝包 openxlsx 並開啟庫。然後,我們使用 read.xlsx 中的選項,從名為 Data.xlsx 的檔案的第 1 張表中匯入第 2、4、6 行和第 5 至 7 列,並將這些資料匯入。

Excel 樣本

之後,我們將生成的資料框的內容列印到控制檯。由於我們不從檔案中讀取列名,我們將引數 colNames 設定為 False。R 會自動為匯入的 Dataframe 中的列分配一個預設的名稱序列:X1X2X3。注意,我們可以通過指定向量來指定要匯入的行和列。

install.packages("openxlsx")
library("openxlsx")
MyData <- read.xlsx(xlsxFile="c:/Tmp/Data.xlsx", sheet = 1, rows = c(2, 4, 6), cols = 5:7, colNames = FALSE)
MyData

輸出:

  X1 X2 X3
1 34 12 17
2 15 25 66
3 32 45 56

更多資訊請查閱官方 openxlsx 文件