精华内容
下载资源
问答
  • r读取excel文件
    千次阅读
    2020-02-17 14:47:22

    R语言有很多package可以读取excel文件。

    xlsx

    xlsx是R语言读和写excel文件的一个包。允许读取excel的一个sheet为data.frame对象,并且把一个data.frame对象写回文件。
    底层实现,xlsx使用apache的一个java库来实现的。详细信息可以看这里http://poi.apache.org/index.html。
    可以在R GUI里面help查看package的详细信息:
    help(package="xlsx")

    简单读取excel的例子:

    library(xlsx)
    dF <- read.xlsx('data.xlsx', sheetIndex=1)
    dF
    

    读取结果:

       name age grade
    1  Lily  23    78
    2  Jack  24    86
    3   Bob  25    89
    4 Henry  22    90
    5 David  23    76
    

    读取函数read.xlsx的参数

    read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,
      startRow=NULL, endRow=NULL, colIndex=NULL,
      as.data.frame=TRUE, header=TRUE, colClasses=NA,
      keepFormulas=FALSE, encoding="unknown", password=NULL, ...)
    

    设定rowIndex。

    > dF <- read.xlsx('data.xlsx', sheetIndex=1, rowIndex=c(1,2,3))
    > dF
      name age grade
    1 Lily  23    78
    2 Jack  24    86
    > dF <- read.xlsx('data.xlsx', sheetIndex=1, rowIndex=c(3,5))
    > dF
       Jack X24 X86
    1 Henry  22  90
    

    函数read.xlsx2read.xlsx相比,对于大型的excel,有很大的性能提升。在函数的help文档里面给的大型参考量是,100,000+的单元格。

    xlsx的内存问题

    xlsx是基于Java的,所以会有内存大小限制。数据文件过大,会有OutOfMemoryError的错误。这个问题一般有两个解决办法,一个是调整Java的参数。

    options(java.parameters = "-Xmx2048m")
    

    一个是用另外的package来读取文件。大部分使用openxlsx包。我们接下来介绍一下这个包。

    openxlsx

    help(package="openxlsx")查看包的help文档。openxlsx是一个可以读,写,编辑xlsx的包。它依赖于Rcpp包,但是没有Java的依赖。

    这个是它read.xlsx的参数。

    read.xlsx(
      xlsxFile,
      sheet = 1,
      startRow = 1,
      colNames = TRUE,
      rowNames = FALSE,
      detectDates = FALSE,
      skipEmptyRows = TRUE,
      skipEmptyCols = TRUE,
      rows = NULL,
      cols = NULL,
      check.names = FALSE,
      sep.names = ".",
      namedRegion = NULL,
      na.strings = "NA",
      fillMergedCells = FALSE
    )
    

    这个是简单读取的R script和结果。

    > library(openxlsx)
    > df <- read.xlsx("data.xlsx",sheet=1)
    > df
      name age grade
    1 Lily  23    78
    2 Jack  24    86
    3  Bob  25    89
    
    更多相关内容
  • R读取excel文件的命令

    千次阅读 2022-03-27 20:51:00
    (3) read.xls(“文件所在路径”) 2.方法二 (1)install.packages(“XLConnect”) (2) library(“XLConnect”) (3) loadwordbook() (4) readworkbook() 3.方法三 (1) install.packages(“xlsx”) (2) library(“xlsx...

    1.方法一
    (1)install.packages(“gadata”)
    (2)library(“gdata”)
    (3) read.xls(“文件所在路径”)
    2.方法二
    (1)install.packages(“XLConnect”)
    (2) library(“XLConnect”)
    (3) loadwordbook()
    (4) readworkbook()
    3.方法三
    (1) install.packages(“xlsx”)
    (2) library(“xlsx”)
    (3) read.xlsx()
    4.方法四
    在这里插入图片描述点击"Browser"选择文件,在Name处可以更改文件名;
    如果一个文件中存在多个工作表,可以在Sheet处选择特定的工作表;
    在Data Previwer处可以预览工作表,在表头旁的倒三角处可以更改数据类型。
    在这里插入图片描述

    展开全文
  • R语言读取Excel文件

    万次阅读 多人点赞 2015-11-25 13:34:44
    因为一个项目需要,原始数据全部是Excel文件,包括.xls和.xlsx格式,并且很多excel数据的格式并不规范,一个个转为csv格式不太现实,所以把所有能了解到的读取excel的方法都试了一遍,做个简单汇总。 相关的包:...

    因为一个项目需要,原始数据全部是Excel文件,包括.xls和.xlsx格式,并且很多excel数据的格式并不规范,一个个转为csv格式不太现实,所以把所有能了解到的读取excel的方法都试了一遍,做个简单汇总。

    相关的包:RODBC、xlsx、openxlsx、gdata、readxl,测试平台win7。

    RODBC包-相关方法

    RODBC-odbcConnectExcel2007()、odbcConnectExcel()、sqlFech()、sqlTables()

    安装

    install.packages(“RODBC”, dependencies=TRUE) #可能需要安装一些依赖包

    使用方法

    #64位机下,.xls和.xlsx文件用相同方法
    library(RODBC)
    con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
    sqlTables(con) #查看该xlsx文件中有哪些表
    #           TABLE_CAT TABLE_SCHEM TABLE_NAME   TABLE_TYPE REMARKS
    # 1 D:\\R\\RODBC.xlsx        <NA>  商品信息$ SYSTEM TABLE    <NA>
    # 2 D:\\R\\RODBC.xlsx        <NA>  补充说明$ SYSTEM TABLE    <NA>
    # 3 D:\\R\\RODBC.xlsx        <NA>  销售信息$ SYSTEM TABLE    <NA>
    table_test <- sqlFetch(con,"销售信息")
    table_test
    odbcClose(con)

    #32位机下,.xls和.xlsx文件主要在方法odbcConnectExcel2007()和odbcConnectExcel()的差异,其余方法相同
    con <- odbcConnectExcel ("D:/R/RODBC.xlsx") #
    sqlTables(con) #查看该xlsx文件中有哪些表
    table_test <- sqlFetch(con,"销售信息")
    odbcClose(con)

    优缺点说明

    RODBC主要是读取数据库的包,是我接触到的读取Excel中效率最高的。并且还有sqlQuery方法可以写SQL灵活读取数据。并且能够同时读取.xls和.xlsx文件。.

    在简单比较了各种方法后,觉得RODBC真是神器,并且没有各种乱七八糟的限制,于是欢快地选择了它,事实证明它的确是又快又爽,可是也隐藏了许多潜在的坑爹特性,不深入了解根本没办法发现。如果你有幸看到,说不定可以提前绕过某些坑,或者无法绕过,只能另择新欢。

    坑No1.

    必须通过Sheet名读取表,一个Excel文件里面可能有多个sheet表,所以你要读取其中某张表,或者所有表,必须提前知道每张表的表名。如下图中的”销售信息”、”商品信息”、”补充说明”。此坑影响不大,并且用sqlTables可以查到表名,可以解决这个问题。

    #在表结构相同的情况下,读取所有的表内容
    con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
    tbls <- sqlTables(con)
    table_test <- sqlFetch(con, tbls$TABLE_NAME[3])
    odbcClose(con)

    坑No2.

    当某一列有不同类型的数值时,就悲剧了,如下例子中,用RODBC读入不能指定读入数据的格式,所以按照Excel默认格式读取数据时,就会出现一列中类型不统一的值为NA。此坑用RODBC无解,只能另择其他。

    如下,测试数据中,区域项目是字符,其余字段为数值或日期。下图左边是excel文件中的内容,右边是读入结果。

    library(RODBC)
    con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
    table_test3 <- sqlFetch(con,"补充说明")
    table_test3
    odbcClose(con)


    坑No3.

    这也是一个不用不知道的坑,RODBC读取Excel文件在数据列较多时,多出的列可能被忽略,RODBC读取极限是255列(没有找到官方的说明,只是我的测试结果)。此坑用RODBC同样无解,只能另择其他。

    如下,使用测试数据有380行280列,RODBC读入后,是380行255列。

    library(RODBC)
    con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
    table_test2 <- sqlFetch(con,"商品信息")
    odbcClose(con)

    xlsx包-相关方法

    xlsx-read.xlsx()、read.xlsx2()

    安装

    install.packages(“xlsx”) #需要已经安装rJava包

    使用方法

    library(xlsx)
    table_test <- read.xlsx("D:/R/xlsx.xlsx",1, encoding="UTF-8")
    table_test1 <- read.xlsx("D:/R/xlsx.xls",1, encoding="UTF-8")
    table_test2 <- read.xlsx2("D:/R/xlsx.xlsx",1, test="UTF-8") #默认读入列为character,可自定义新的列。

    优缺点说明

    优点很明显,上面的例子很完美解决了上面RODBC的坑No2.,同时可以读取.xls文件。此外,xlsx还有write.xlsx()系列方法,读写兼具,有需要的可以查看说明文档。
    坑No1.
    缺点也非常明显,就是效率极低,读取数据时间长并且稍大的数据集就可能出现内存不够用的问题。下面的例子就是用RODBC和xlsx的方法分别读取同一个excel文件所用时间,RODBC的优势很明显,测试数据1340行3列。

    library(RODBC)
    con <- odbcConnectExcel2007("D:/R/ceshi.xlsx")
    system.time(table_test <- sqlFetch(con,"Sheet1"))
    odbcClose(con)
    library(xlsx)
    system.time(table_test <- read.xlsx("D:/R/ceshi.xlsx",1, encoding="UTF-8"))

    坑No2.

    容易出现内存不够用的问题。用xlsx的方法读取前面用到测试RODBC的数据表,结果,错误信息就是OutOfMemory。

    openxlsx包-主要方法

    openxlsx-read.xlsx()

    安装

    install.packages("openxlsx")

    使用方法

    library(openxlsx)
    table_test <- read.xlsx("D:/R/xlsx.xlsx",1)
    table_test1 <- read.xlsx("D:/R/xlsx.xls",1)


    优缺点说明

    优点与xlsx包中的方法一样,不会出现RODBC的坑No2.的问题。此外,读取ceshi.xlsx所花费时间比RODBC稍长,但相比xlsx快了许多。并且同样有write.xlsx()方法,读写兼具。

    system.time(table_test <- read.xlsx("D:/R/ceshi.xlsx",1))

    坑No1.

    缺点很大的一个,见上面的使用方法,不能读取.xls文件。

    gdata包-相关方法

    gdata-read.xls()

    安装

    install.packages("gdata")  #电脑已安装Perl

    使用方法

    library(gdata)
    table_test <- read.xls("D:/R/xlsx.xlsx",1, fileEncoding="UTF-8",sep=",") #xlsx文件
    table_test1 <- read.xls("D:/R/xlsx.xls",1, fileEncoding="UTF-8",sep=",") #xls文件

    优缺点说明

    优点同样,不会有RODBC的两个问题。效率用同样的ceshi.xlsx文件来做测试,可以看到花费时间优于xlsx。同时可以读取.xlsx和.xls文件。

    system.time(table_test <- read.xls("D:/R/ceshi.xlsx",1, fileEncoding="UTF-8",sep=","))

    坑No1.

    gdata是基于Perl的,所以存在因为Perl而可能出现的问题。读取中文字符时,可能会出现“Wide character in print”的提醒信息。这是由于perl只能处理两种编码:ascii码和utf-8。ascii码是很少的,像中文、日文、韩文等字符要想能被perl处理,只能用 utf-8编码方式。

    下面就是我在读取某个Excel文件时,输出的log文件。log文件里面基本上全部是这样的提醒。

    readxl包-相关方法

    readxl-read_excel()

    安装

    install.packages("readxl")

    使用方法

    library(readxl)
    table_test <- read_excel ("D:/R/xlsx.xlsx",1, col_types =c("text","text")) #xlsx文件
    table_test1 <- read_excel ("D:/R/xlsx.xls",1, col_types = c("text","text")) #xls文件

    优缺点说明

    优点同样不存在RODBC的坑No1.和坑No2.,读取效率利用ceshi.xlsx文件测试,读取比RODBC更高效。

    system.time(table_test <- read_excel("D:/R/xlsx.xlsx",1))

    坑No1.

    见使用方法,不能读取.xls文件。


    最后对同一个文件,使用这五个包中的相关方法,对读取结果做一个对比。可以看看这些包在效率和对Excel中一些特殊的数据格式的读取结果。

    #gdata
    library(gdata)
    system.time(table_test <- gdata::read.xls("D:/R/ceshi.xlsx",2, fileEncoding="UTF-8",sep=","))
    #RODBC
    library(RODBC)
    con <- odbcConnectExcel2007("D:/R/ceshi.xlsx") #64位机下方法
    tbls <- sqlTables(con)
    system.time(table_test1 <- sqlFetch(con, tbls$TABLE_NAME[2]))
    odbcClose(con)
    #xlsx
    library(xlsx)
    system.time(table_test2 <- xlsx::read.xlsx("D:/R/ceshi.xlsx",2,encoding="UTF-8"))
    #openxlsx
    library(openxlsx)
    system.time(table_test3 <- openxlsx::read.xlsx("D:/R/ceshi.xlsx",2))
    #readxl
    library(readxl)
    system.time(table_tes4 <- read_excel("D:/R/ceshi.xlsx",2)) 

    原始数据表


    gdata读入结果


    RODBC读入结果


    xlsx读入结果


    openxl读入结果


    readxl读入结果


    可以说没有完美的方法。

    综上,对Excel数据分析的基本原则:

    1.      能转化成csv格式,请尽量这样做,这个才是最高效的选择。

    2.      1无法达到的情况下,小数据量,并且数据格式比较统一的情况下优先选择RODBC。

    3.      非.xls文件时,优先选择readxl、openxlsx。

    4.      同时需要读写操作,xlsx(效率较低,对内存要求高)或者openxlsx。


    有任何问题或建议,欢迎指出。

    转载请说明出处,谢谢。

    展开全文
  • R 读取 Excel 文件

    2021-05-28 17:55:12
    # 安装 XLConnect 包 install.packages("XLConnect") # 导入这个包 library(XLConnect) 读取文件 connect <- loadWorkbook("A:/R/2.xls")
    # 安装 XLConnect 包
    install.packages("XLConnect")
    
    # 导入这个包
    library(XLConnect)
    

    读取文件

    connect <- loadWorkbook("A:/R/2.xls")
    

    在这里插入图片描述

    展开全文
  • R读取excel文件中的数据

    千次阅读 2021-08-23 11:34:24
    打开EXCEL,全选里面的内容,点击复制(不能剪切),然后在R中输入一下命令: data <- read.table("clipboard", header = T, sep = '\t') 结果如下:
  • 怎么将na给去除却不删除整行
  • R语言读取Excel文件并导入

    万次阅读 多人点赞 2018-03-20 17:32:12
    之后读取一个Excel文件: read.xlsx2(file="E:\\test.xlsx",sheetIndex=1) 其中的E:\\test.xlsx为目标文件的地址 接着,将文件读取出来并赋值给Mydata: Mydata&lt;-read.xlsx2(file="E:...
  • #获取excel中工作簿的名称 sheetnames&lt;-getSheetNames('test.xlsx') #把每个工作薄的数据按照'工作薄名称.csv'的名称存储 for(i in (1:length(sheetnames))){ write.table(read.xlsx('F:/test.xlsx...
  • R读取excel文件

    2022-01-23 13:20:21
    众所周知,excel生成的文件后缀是xls或者xlsx,早期读取这样的文件,要么就另存为csv格式,要么就用readxls或者xlsx这样的R包,可能会遇到Rjava报错的问题。现在有了一个优秀的解决办法,就是rio包。 它能够兼容...
  • 这是R语言读取EXCEL文件内容的软件包xlsReadWrite。用Rgui安装程序包方法下载的xlsReadWrite无法正常运行,会出现参数个数大于10个的提示。此资源是从http://dl.dropbox.com/u/2602516/swissrpkg/index.html直接...
  • R语言读取Excel文件 常见问题解决

    万次阅读 2018-10-16 13:59:33
    1 ,读取excel文件的包:xlsx包 只能读取".xlsx"格式的包 install.packages("xlsx") library(xlsx) read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL, startRow=NULL, endRow=...
  • python读取excel文件

    2022-05-07 22:06:13
    workBook = xlrd.open_workbook(r'文件位置/名字.xlsx') 3.获取sheet名字 # 1.1 获取所有sheet的名字(list类型) allSheetNames = workBook.sheet_names() print(allSheetNames) 完整代码 import xlrd def ...
  • java读取excel文件

    2022-06-14 11:19:28
    导入Maven依赖 读取excel文件 成功读取导入依赖 读取excel文件 成功读取
  • Python读取Excel文件

    千次阅读 2022-04-10 15:18:30
    2、读取Excel文件 readfile = xlrd.open_workbook(r"E:\PycharmProjects\APITest\工作簿1.xls") print(readfile) 3、获取全部sheet名称 # 获取sheet名称 names = readfile.sheet_names() print(names) 4、选择所...
  • 现在有了雷地斯:readxl包可以轻松地从Excel中获取数据并进入R。与现有软件包(例如gdata、xlsx、xlsReadW区等)相比,readxl没有外部依赖关系,因此在所有操作系统上安装和使用都很容易。它用于处理存储在单个工作表中...
  • 在PHP中读取Excel文件

    2021-03-22 19:19:52
    在PHP中读取Excel文件我试图读取Excel文件(Office 2003)。 有一个Excel文件需要上传并解析其内容。通过谷歌,我只能找到这些相关(和不充分的主题)的答案:生成Excel文件,阅读Excel XML文件,阅读Excel CSV文件或不...
  • R语言读取EXCEL文件的各种方法

    千次阅读 2014-07-10 11:37:54
    第一:R读取excel文件中的数据的路径:  假定在您的电脑有一个excel文件,原始的文件路径是:D:\work\data\1  如果直接把这个路径拷贝到R中,就会出现错误,原因是:  \是escape character(转...
  • JAVA读取Excel文件

    2021-10-14 23:10:55
    使用POI读取Excel import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; ...
  • R语言入门(17)-读写excel文件

    千次阅读 2022-01-23 22:23:33
    一、手动将excel文件变成csv文件,用read.csv()读取. 二、将excel文件中的数据剪切,放入剪贴板中,使用read.table("clipboard",sep="\t",header=T) 三、使用XLConnect包读取文件 vignette("XLConnect") 两步法...
  • R语言读取excel数据的常用方式有哪些?
  • Rstudio读取Excel中数据的详细步骤。

    万次阅读 多人点赞 2019-03-15 20:29:07
    简述R语言读取Excel中数据的步骤。 代码命令行操作 A、先安装xlsx的包 library(xlsx) table_test1 &lt;- read.xlsx(“G:/R/mvstats4.xls”,1, encoding=“UTF-8”) 方法二 :图形化界面操作 第一步: 第...
  • openpyxl读取Excel文件

    千次阅读 2022-05-03 14:12:21
    接下来以名称为"case_data.xlsx"的Excel文件介绍openpyxl 二、安装openpyxl 1、首先需要安装 Python 环境,/ 2、使用 win+R 打开运行,输入框输入 cmd 3、安装 openpyxl pip install openpyxl 三、openpyxl 读取 ...
  • 我试图找到一种适当的方法来读取NT服务器操作系统上的Excel文件的内容。 我在使用Excel API时遇到许多问题,然后...有没有其他方法可以使我在服务器(无UI)上读取Excel文件(xls,xlsx,xlsm),而不会遇到Excel API中...
  • 一、读取Excel 提到读取数据,就不得不说 pandas 这个库了,它可以读取的文件格式如图;对表格进行数据分析时,常使用 read_csv 或者 read_excel 首先把 C:\Users\acer\Desktop\data analysis\Playing.xlsx 文件...
  • xlsx是Microsoft Office EXCEL 2007/2010/2013/2016/2019文档的扩展名。其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc...
  • python批量读取Excel文件

    千次阅读 2022-02-25 11:03:05
    将同一个文件夹下的xlsx文件读取: import os import pandas as pd path = r'./path of file' for i in os.listdir(path): df = pd.read_excel(os.path.join(path,i))
  • R语言导入数据文件(数据导入、加载、读取)、使用xlsx包的read.xlsx函数导入excel文件(Excel File)、sheetIndex设置读取excel文件的第几个表单(sheet)
  • R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数) 目录 R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数) #xlsx包的read.xlsx函数读取excel #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,856
精华内容 15,942
关键字:

r读取excel文件