R—读取数据(导入csv,txt,excel文件)

转自:http://www.cnblogs.com/zhangduo/p/4440314.html

导入CSV、TXT文件

read.table函数:read.table函数以数据框的格式读入数据,所以适合读取混合模式的数据,但是要求每列的数据数据类型相同。

read.table读取数据非常方便,通常只需要文件路径、URL或连接对象就可以了,也接受非常丰富的参数设置:

  • file参数:这是必须的,可以是相对路径或者绝对路径(注意:Windows下路径要用斜杠'/'或者双反斜杠'\\')。补充:关于路径,博主此处写的有误,用“//”、“/”
  • header参数:默认为FALSE即数据框的列名为V1,V2...,设置为TRUE时第一行作为列名。
1
2
data1<- read.table ( 'item.csv' ) #默认header=FALSE
data2<- read.table ( 'item.csv' ,header= TRUE )

  • sep参数:分隔符,默认为空格。可以设置为逗号(comma)sep=',',分号(semicolon)sep=';'和制表符(tab)。
  • read.csv、read.csv2、read.delim是read.table函数的包装,分隔符分别对应逗号,分号,制表符,同样接受read.table所有参数。
  • read.csv函数header参数默认为TRUE,不同于read.table。
1
2
3
data3<- read.csv ( 'item.csv' ,sep= ',' ,header= TRUE )
data4<- read.table ( 'item.csv' )
#下文示例采用read.csv函数,两种写法效果相同

  • 字符型数据读入时自动转换为因子,因子是R中的变量,它只能取有限的几个不同值,将数据保存为因子可确保模型函数能够正确处理。But当变量作为简单字符串使用时可能出错。要想防止转换为因子:1.令参数stringAsFactors=FALSE,防止导入的数据任何的因子转换。2.更改系统选项options(stringsAsFactors=FALSE)3.指定抑制转换的列:as.is=参数。通过一个索引向量指定,或者一个逻辑向量,需要转换的列取值FALSE,不需要转换的列取值TRUE。
1
data5<- read.csv ( 'item.csv' ,stringAsFactors= FALSE )
  • 如果数据集中含有中文,直接导入很有可能不识别中文,这时加上参数fileEncoding='utf-8'
1
read.csv ( 'data.csv' ,fileEncoding= 'utf-8' )

一般这些参数足够使用,但是当导入大量数据时可能吃不消,下面一些参数可能有所帮助(其他用途当然也可以)。

读取大量数据时,在不加内存的情况下预先分配内存是很好的选择。

首先reaadLines函数可以获得数据的行数(注意L为大写)。先判断数据量。

1
lines<- readLines ( 'item.csv' )
  • comment.char:注释默认是#后面的内容,也可以设置为其他字符。若数据中没有注释,则令comment.char=''可以加快读取速度。
1
2
#若不包含注释(默认为#),设置comment.cahr=''可能加快读取速度,也可以指定注释字符
data3<- read.csv ( 'item.csv' ,comment.char= '' )

  • nrows:读取最大行数,再加上header。读取大量数据时可以读取其中一部分。
1
data4<- read.csv ( 'item.csv' ,comment.char= '' ,nrows=10) #读取前10行数据和header
  • skip:指定从文件开头跳过的行数,再加上header。
1
2
#skip指定从文件开头(不包括header)跳过的行数
data5<- read.csv ( 'item.csv' ,comment.char= '' ,nrows=10,skip=2) #跳过前两行和header

  • colClasses:指示每一列的数据类型,先分析一部分数据得到数据类型,然后指定数据类型可以加快读取速度。另外:“NULL”指示跳过该列,不加引号的NA软件自动识别。
1
2
3
4
5
6
7
#colClasses指示每一列的数据类型
classes<- sapply (data9,class)
data6<- read.csv ( 'user.csv' ,colClasses=classes)
#NULL跳过该列
data7<- read.csv ( 'user.csv' ,colClasses= list ( 'integer' , 'NULL' , 'factor' ))
#不加引号的NA,软件自动识别该列
data8<- read.csv ( 'user.csv' ,colClasses= NA )

scan函数:返回一个向量。当读取的数据为同一模式时,scan是最佳方式,默认读取数值型数据。

若想读取其他类型,使用what=参数指定。读取大数据文件时,若想跳过某一列数据,可以在what=参数列表中使用NULL。

scan函数通常用来读取数据矩阵,嵌入matrix函数中使用。

1
2
3
4
value<= scan ( '1.csv' ,what= c (f1=0, NULL ,f3= '' , rep ( list ( NULL ),6),f10=0))
#第一列、第十列为数值类型,f3=''表示第三列为字符型数据,第二列和第四列到第九列跳过。rep函数不能复制null,故用列表形式添加多个NULL
data<- matrix ( scan (),ncol=5,byrow= TRUE )
#scan()返回一个向量,ncol=5表示组成的矩阵为五列,矩阵默认为按列存储也可通过设置byrow=TRUE为按列存储。

read.fwf函数,header=参数,as.is=参数,sep=参数等,同read.table。widths=参数是一个向量,向量值是要读入的字段宽度,负数表示跳过。

读取Excel文件

如果可能的话尽量将Excel文件另保存为CSV文件,方便导入。但是无论保存为CSV还是TXT文件,都只能保存当前活动的工作表。

readxl包 可以很方便的读取,且各个系统都通用。如果只是读取的话,无疑是非常方便的方法。

只需要下载readxl包,用read_excel函数读取就可以了,并且同时支持老版本的.xls格式和新版本的.xlsx格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#下载和引用
install.packages ( "readxl" )
library (readxl)
#读取Excel
read_excel ( "old_excel.xls" )
read_excel ( "new_excel.xlsx" )
#sheet参数,指定sheet名或者数字
read_excel ( "excel.xls" ,sheet=2)
read_excel ( "excel.xls" ,sheet= "data" )
# If NAs are represented by something other than blank cells,
# set the na argument
read_excel ( "excel.xls" , na =  "NA" )

RODBC包:只基于Windows

  • 1.安装包和引用RODBC包,安装不加引号,引入不加引号。
  • 2.连接Excel表格文件。.xls格式的Excel用odbcConnectExcel函数,.xlsx格式的Excel用odbcConnectExcel2007函数。
  • 3.读取数据:sqlFetch函数,其中默认Excel表格第一行作为列的变量名。
  • 4.断开连接。
1
2
3
4
5
6
7
8
9
10
11
12
#安装和引用RODBC包,安装不加引号,引入不加引号
install.packages ( "RODBC" )
library (RODBC)
#创建连接
connect<- odbcConnectExcel ( 'secert.xls' )
#读取Excel表格,其中A为Sheet名(支持中文)
sqlFetch (connect, 'A' )
#关闭R与Excel表格的连接
odbcClose (connect)

XLConnect包:

  • 1.安装包和引用XLConnect包。
  • 2.连接Excel表格文件:loadWorkbook函数
  • 3.读取数据:readWorksheet函数(connect,'Sheet名'),同样默认Excel表格第一行作为列的变量名。

各个系统通用,并且不只是支持读取,也可以写入。

1
2
3
4
5
6
7
8
9
#安装和引用XLConnect包
install.packages ( 'XLConnect' )
library (XLConnect)
#连接
connect<- loadWorkbook ( 'secert.xlsx' )
#读取,A为Sheet名
readWorksheet (connect, 'A' )

R—读取数据(导入csv,txt,excel文件)相关推荐

  1. php导出1万条数据excel_PHP快速导出百万级数据到CSV或者EXCEL文件

    前言: 很多时候,因为数据统计,我们需要将数据库的数据导出到Excel等文件中,以供数据人员进行查看,如果数据集不大,其实很容易:但是如果对于大数集的导出,将要考虑各种性能的问题,这里以导出数据库一百 ...

  2. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  3. (万能通用模板)--- SpringBoot导入、导出Excel文件

    先把项目的demo发一下,看完文章可以看一下,demo 前言:最近做项目过程中使用到了一个权限管理框架:若依,使用过程中发现他的文件导入和导出功能非常的实用,在这里特此做一个小demo跟大家分享一下. ...

  4. R语言导入数据文件(数据导入、加载、读取)、导入csv、excel、sav、por、dat、sas7bdat格式文件

    R语言导入数据文件(数据导入.加载.读取).导入csv.excel.sav.por.dat.sas7bdat格式文件 目录

  5. R语言|1.4 R语言读取数据(csv,txt,xlsx)

    R语言|1.4 R语言读取数据(csv,txt,xlsx) 1.4.1获取R的内置数据集 1.4.2模拟特定分布数据 1.4.3导入数据 1)导入txt与csv 2)导入xls与xlsx 1.4.1获 ...

  6. python爬虫案例分析:爬取肯德基门店地址数据导入csv文件并最终用excel文档呈现

    1.用到的模块: requests pprint csv 2.找到肯德基门店网站进入门店位置页面后,打开抓包工具,找到response中包含所需信息的正确的url信息 3. 导入地址url 4.为防止 ...

  7. C# 读取CSV和EXCEL文件示例

    我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...

  8. mysql数据导入导出 CSV格式_导出mysql的数据为csv格式的文件

    Mysql自带数据导出的命令 into outfile(本地导出) SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' ...

  9. matlab读取txt/excel文件并画图的方法

    matlab读取txt/excel文件为矩阵,并进行画图的方法 1. matlab准备 如果没有matlab的话,只需要到学校网站上下载,按照步骤就可以安装.THU的下载地址如下: THU matla ...

最新文章

  1. xmindcore.java_求解Xmind问题
  2. 【机器视觉】 HDevelop语言基础(四)-流程控制语句
  3. C# 数组增加元素_C语言数组——任意位置插入一个元素
  4. 为什么大多数编程语言性能对比都有问题?
  5. 学习和研究下unity3d的四元数 Quaternion
  6. 威纶通触摸屏上传错误_威纶通触摸屏程序怎么上传?
  7. LNK2005 解决方法以及发生原因
  8. Python利用GUI界面制作B站弹幕分析工具
  9. 霍夫斯特拉大学计算机科学专业排名,2019usnews美国大学排名霍夫斯特拉大学排名第140...
  10. Scala折叠(fold)
  11. Excel的一些实用函数(if函数,vlookup函数,match函数)
  12. 用于视力恢复的脑机接口综述(一)
  13. 【笔记】C++之SLT的常用容器
  14. 我只会SQL,到底能不能找到工作?
  15. 读书笔记|| 类继承
  16. pAdTy_1 构建图形和动画应用程序
  17. 爬虫六、gevent协程与queue模块
  18. 南华大学计算机学院足球队,南华大学“新生杯”足球赛圆满落幕
  19. 第九章 知识结构图谱
  20. 未来计算机网络在医学上的发展,论述计算机网络技术在医学技术中的发展和作用.doc...

热门文章

  1. ipv6单播地址包括哪两种类型_IPv6地址详解
  2. 通过完整的PID传递函数例题,学会使用simulink仿真,包括:1,使用matlab仿真、2,组件子系统封装、命名等、3,通过输入不同波形,观察该系统跟踪效果对比。
  3. Cocos Creator 实现战旗类游戏《火焰纹章》移动范围效果
  4. JQuery 实现简单的网页信息管理
  5. c++11中emplace_back vs push_back
  6. MacOS虚拟机中xcode调试识别不出iPhone真机问题
  7. 服务器系统添加休眠,服务器主机休眠功能
  8. 商标和字号的五大区别
  9. 《从零开始学Python网络爬虫》罗攀 蒋仟 代码
  10. 【有限元分析】卷扬机卷筒心轴静力学分析