介紹如何使用 R 語言讀取 Excel 的 xlsx、xls 與 csv 檔案,匯入表格資料。
一般常見的 Excel 檔案有 *.xlsx
、*.xls
與 *.csv
,以下是在 R 中讀取這些檔案的方法教學。
若要讀取 Excel 的 *.xlsx
檔案,可以使用 openxlsx
套件,此套件可從官方的 CRAN 套件庫下載安裝:
# 安裝 openxlsx 套件 install.packages("openxlsx")
安裝完成之後,將其載入即可使用:
# 載入 openxlsx 套件 library(openxlsx)
使用 openxlsx
套件的 read.xlsx
讀取 Excel 檔案,工作表的指定可以使用名稱或是數字索引:
# 讀取 Excel 檔案的「工作表1」 df <- read.xlsx("file.xlsx", sheet = "工作表1") # 讀取 Excel 檔案的第 1 張工作表 df <- read.xlsx("file.xlsx", sheet = 1)
若表格資料中沒有標題列,可以將 colNames
設定為 FALSE
:
# 沒有標題列 df <- read.xlsx("file.xlsx", colNames = FALSE)
若將 detectDates
參數設定為 TRUE
的話,讀取資料時會自動偵測資料是否為日期類型的資料,並自動將資料的型態轉為 R 的日期資料:
# 自動偵測並轉換日期資料 df <- read.xlsx("file.xlsx", detectDates = TRUE)
如果只要讀取表格中部分的資料,可以使用 startRow
設定起始的讀取列,或是直接以 rows
與 cols
參數指定讀取範圍:
# 從第 10 列開始讀取資料(跳過前 9 列) df <- read.xlsx("file.xlsx", startRow = 10) # 讀取第 5 到 10 行與第 2 到 5 列的資料 df <- read.xlsx("file.xlsx", rows = 5:10, cols = 2:5) # 讀取第 2, 4, 5 行與第 4, 5 列的資料 df <- read.xlsx("file.xlsx", rows = c(2, 3, 4), cols = c(4, 5))
若要讀取舊版 Excel 的 *.xls
檔案,可以使用 readxl
套件來處理。
readxl
套件同樣可以從官方的 CRAN 套件庫下載與安裝:
# 安裝 readxl 套件 install.packages("readxl") # 載入 readxl 套件 library(readxl)
以下是使用 readxl
套件讀取 Excel 檔案的範例。
# 讀取 Excel 檔案的「工作表1」 df <- read_excel("file.xls", sheet = "工作表1") # 讀取 Excel 檔案的第 1 張工作表 df <- read_excel("file.xls", sheet = 1) # 沒有標題列 df <- read_excel("file.xls", col_names = FALSE)
指定讀取範圍的方式有兩種,一種是以英文表示欄號、數字表示列號的方式:
# 讀取指定範圍資料 read_excel("file.xls", range = "C1:E7")
另一種範圍指定方式是以列號(R
)與行號(C
)來表示:
# 讀取指定範圍資料(等同於 C1:E7) read_excel("file.xls", range = "R1C2:R2C5")
readxl
套件可以讀取 XLSX 與 XLS 兩種 Excel 檔案格式,此處的範例也適用於 XLSX 檔案。R 語言本身就有內建讀取 CSV 檔案的功能,只要使用 read.csv
即可直讀取 *.csv
檔案:
# 讀取 CSV 檔案 df <- read.csv("file.csv")
read.csv
預設會將 CSV 檔案的第一列視為標題列,如果自己的 CSV 檔案的資料沒有包含標題列,可以將 header
參數設定為 FALSE
:
# 讀取 CSV 檔案(沒有標題列) df <- read.csv("file.csv", header = FALSE)
通常 CSV 檔案的欄位分隔符號都是逗號,如果遇到不是以逗號分隔欄位的特殊的 CSV 檔案,可以自行以 sep
參數指定分隔字元:
# 讀取 CSV 檔案(欄位分隔符號為 Tab) df <- read.csv("file.csv", sep = "\t")
若要指定檔案的編碼,可以使用 fileEncoding
參數:
# 讀取 CSV 檔案(檔案編碼為 UTF-8) df <- read.csv("file.csv", fileEncoding = "UTF-8")
read.csv
預設會將表格中的文字資料自動轉為 R 的因子(factor),如果想要文字資料維持字元的格式,可以將 stringsAsFactors
參數設定為 FALSE
:
# 讀取 CSV 檔案(不要將文字轉為因子) df <- read.csv("file.csv", stringsAsFactors = FALSE)