读取excel数据的三个R包

一、xlsx包里的read.xlsx()和read.xlsx2(),以dataframe格式读入,二者的区别是read.xlsx2()读取数据量的大(超过100 000个单元格)的表格更快。xlsx包是一个基于java的R包,需要配置好相应的java环境。

read.xlsx(
  xlsxFile,#支持"xls"和"xlsx"文件
  sheetIndex = 1,#工作表序号。
  sheetName = NULL,#工作表名称。
  rowIndex = NULL,#默认查找全部行的数据。
  startRow = NULL,#默认从第一行开始查找数据。
  endRow = NULL,#默认到查找数据到最后一行。
  colIndex = NULL,#默认查找全部列的数据。
  as.data.frame = TRUE,#默认转成dataframe。
  header = TRUE,#默认读取第一行为列名。
  colClasses = NA,#可以指定每一列的变量类型,包括numeric, character, Date, POSIXct。NA表示通过第一行的数据来猜测数据的格式。
  keepFormulas = FALSE,#默认不保留数据中的公式。
  encoding = "unknown",#默认不指定编码。
  password = NULL#默认excel未设置密码。
)

相应的,导出数据的函数也有两个,分别是write.xlsx()和write.xlsx2()。

write.xlsx(
  x,#需要导出的数据框
  file,#到出文件的路径
  sheetName = "Sheet1",#导出后生成表格(sheet)的名称,默认为Sheet1
  col.names = TRUE,#默认导出数据框的列名
  row.names = TRUE,#默认导出数据框的行名
  append = FALSE,#默认不以追加新sheet方式将数据导出到已有Excel文档中
  showNA = TRUE,#默认呈现NA
  password = NULL#默认文件未设置密码
)

二、openxlsx包里的read.xlsx()

read.xlsx(
  xlsxFile,#xlsx文件名,不支持"xls"文件
  sheet = 1,#工作表名称或序号
  startRow = 1,#默认从第一行开始查找数据。另外,不管startRow的值是多少,文件顶部的空行总是会被跳过。
  colNames = TRUE,#如果为TRUE,第一行数据将用作列名。
  rowNames = FALSE,#如果为TRUE,第一列将用作行名。
  detectDates = FALSE,#如果为TRUE,尝试识别日期并执行转换。
  skipEmptyRows = TRUE,#如果为TRUE,则跳过空行,否则在包含数据的第一行之后的空行将返回一行NAs。
  skipEmptyCols = TRUE,#如果为TRUE,则跳过空列
  rows = NULL,#一个数字向量,指定要读取Excel文件中的哪些行。如果为NULL,则读取所有行。
  cols = NULL,#一个数字向量,指定要读取Excel文件中的哪些列。如果为NULL,则读取所有列。
  check.names = FALSE,#如果为TRUE,则检查数据框中的变量名,以确保它们在语法上是有效的变量名
  sep.names = ".",#一个字符,默认情况下,用"."来代替列名中的空格
  namedRegion = NULL,#对于普通的xlsx文件来说不必理会
  na.strings = "NA",#空白单元格将返回为NA
  fillMergedCells = FALSE#如果为TRUE,合并单元格中的值将给予合并单元格中的所有单元格。
)

三、readxl包里的read_xls()、read_xlsx()和read_excel(),以tibble格式读入。三者参数一致,只不过read_excel()会自动判定数据是xls或xlsx那种类型。readxl包不需要依赖java环境,非常容易安装。

read_excel(path, #excel文件名,自动判断xls或xlsx
          sheet = NULL, #工作表名(sheet1)或表的序号(1)
          skip = 0,#读取时要跳过的最小行数,如果依旧有空行,继续跳过该行
          n_max = Inf, #最大的读取行数,如果实际存在有效内容的行数(不为NA)小于该参数值,则读取会提前终止
          range = NULL, #读取的工作表的范围,比如"B1:D8"或"R1C2:R2C5"或"sheet1!B1:D8",优先级高于"skip","nmax"和"sheet"参数
          col_names = TRUE,#TRUE表示使用第一行作为列名,FALSE表示获取默认名称,或者一个字符向量表示每个列的名称。
          col_types = NULL, #NULL表示函数自己猜测列类型, 全按文本读取是col_types = list(.default = col_character())
          na = "", #默认情况下,readxl将空白单元格视为丢失的数据"NA"
          trim_ws = TRUE, #默认为TRUE,将自动去除表前后的空白行,优先级低于"range",指定"range"时该参数值TRUE无效
          guess_max = min(1000, n_max),#用于猜测列类型的最大数据行数。
          progress = readxl_progress(), #是否显示处理进程,默认只出现在交互式会话中
          .name_repair = "unique"#列名的处理。默认情况下,readxl将确保列名不为空并且是唯一的
)

对于read_excel()的具体实例可以学习这个链接R 读取Excel文件 学习笔记 - 简书

参考资料:R如何直接读取Excel表格数据?_xlsx

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值