一、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文件 学习笔记 - 简书