1. 程式人生 > 電腦技巧 >R 讀取 Excel 檔案表格資料教學與範例

R 讀取 Excel 檔案表格資料教學與範例

介紹如何使用 R 語言讀取 Excel 的 xlsx、xls 與 csv 檔案,匯入表格資料。


一般常見的 Excel 檔案有 *.xlsx、*.xls與 *.csv,以下是在 R 中讀取這些檔案的方法教學。

讀取 XLSX 檔案

若要讀取 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))

讀取 XLS 檔案

若要讀取舊版 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 檔案。

讀取 CSV 檔案

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)