今天来学习下怎么将xls/xlsx格式文件中的数据导入到R中。
主要介绍三种方式。
下面读取的数据文件默认放置于工作目录中。
在读取数据前,可以先阅读这篇文章(猛戳:Excel数据导入R前的注意事项),将Excel中的数据进行预处理,方便读取以防出错。
1. 从剪切板读取数据
xls/xlsx文件不同于txt、csv文件,需要使用其他的方式读取。
首先对于小样本数据,可以打开Excel文件,将需要读取的数据复制到剪切板,然后使用read.table()函数读取剪切板中的数据即可。
my_data <- read.table(file = "clipboard", # 读取剪切板中的数据
sep = "\t", # 指定分隔符
header=TRUE) # 指定第一行是否为列变量名称
上面是Windows系统的数据读取方式,水果机的读取代码略有区别。
# 水果机使用pipe(pbpaste)函数读取剪切板的数据
my_data <- read.table(pipe("pbpaste"),
sep="\t",
header = TRUE)
2. 使用readxl包读取数据
对于大样本的数据,使用剪切板就比较麻烦,可以使用readxl包来读取数据。这个包是Hadley Wickham大神开发的。
readxl包中的read_excel()函数可以读取xls/xlsx文件。
install.packages("readxl") # 安装R包
library("readxl") # 加载R包
# 读取xls文件,文件位于工作目录下
my_data <- read_excel("my_file.xls")
# 读取xlsx文件
my_data <- read_excel("my_file.xlsx")
同样也可以跟前面一样交互式浏览本地文件导入,代码如下:
my_data <- read_excel(file.choose())
也可以指定读取Excel中的sheet表格,一般默认读取第一个表格。
# 通过指定sheet表名称来读取数据
my_data <- read_excel("my_file.xlsx", sheet = "data")
# 指定读取名为data的sheet表格
# 通过指定sheet表的顺序数字来读取数据
my_data <- read_excel("my_file.xlsx", sheet = 2)
# 指定读取第二个表格
3. 使用xlsx包读取数据
除了readxl包外,还可以使用xlsx包来读取Excel文件。
install.packages("xlsx") # 安装R包
library("xlsx") # 加载R包
xlsx包中有两个函数可以用来读取xls/xlsx文件:read.xlsx()和read.xlsx2(),在读取大样本数据时,后者要比前者快。
read.xlsx(file, # 指定数据文件路径
sheetIndex, # 指定读取的sheet表格,可以用数字表示
header=TRUE) # 逻辑词,是否将第一行作为列名
read.xlsx2(file, sheetIndex, header=TRUE) # 同上
示例:
# 读取xls文件,文件位于工作目录下
my_data <- read.xlsx("my_file.xls")
# 读取xlsx文件
my_data <- read.xlsx("my_file.xlsx")
同样也可以跟前面一样交互式浏览本地文件导入,代码如下:
# 数字1表示读取文件中第一个sheet表格
my_data <- read.xlsx(file.choose(), 1)
参考资料
http://www.sthda.com/english/wiki/reading-data-from-excel-files-xls-xlsx-into-r