科研星球

R语言统计与绘图:三种方法高效读取xls/xlsx格式文件

今天来学习下怎么将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)  

参考资料

  1. http://www.sthda.com/english/wiki/reading-data-from-excel-files-xls-xlsx-into-r


没有账号?