导入CSV、TXT文件

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

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

  • file参数:这是必须的,可以是相对路径或者绝对路径(注意:Windows下路径要用斜杠'/'或者双反斜杠'\\')。
  • header参数:默认为FALSE即数据框的列名为V1,V2...,设置为TRUE时第一行作为列名。
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。
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。
data5<-read.csv('item.csv',stringAsFactors=FALSE)
  • 如果数据集中含有中文,直接导入很有可能不识别中文,这时加上参数fileEncoding='utf-8'
read.csv('data.csv',fileEncoding='utf-8')

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

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

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

lines<-readLines('item.csv')
  • comment.char:注释默认是#后面的内容,也可以设置为其他字符。若数据中没有注释,则令comment.char=''可以加快读取速度。
#若不包含注释(默认为#),设置comment.cahr=''可能加快读取速度,也可以指定注释字符
data3<-read.csv('item.csv',comment.char='')
  • nrows:读取最大行数,再加上header。读取大量数据时可以读取其中一部分。
data4<-read.csv('item.csv',comment.char='',nrows=10)#读取前10行数据和header
  • skip:指定从文件开头跳过的行数,再加上header。
#skip指定从文件开头(不包括header)跳过的行数
data5<-read.csv('item.csv',comment.char='',nrows=10,skip=2)#跳过前两行和header
  • colClasses:指示每一列的数据类型,先分析一部分数据得到数据类型,然后指定数据类型可以加快读取速度。另外:“NULL”指示跳过该列,不加引号的NA软件自动识别。
#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函数中使用。

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格式。

#下载和引用
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.断开连接。
#安装和引用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表格第一行作为列的变量名。

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

#安装和引用XLConnect包
install.packages('XLConnect')
library(XLConnect) #连接
connect<-loadWorkbook('secert.xlsx') #读取,A为Sheet名
readWorksheet(connect,'A')

R—读取数据(导入csv,txt,excel文件)的更多相关文章

  1. csv,txt,excel文件之间的转换,perl脚本

    最近接触一些需要csv,txt,excel文件之间的转换,根据一些网上搜索加上自己的改动,实现自己想要的结果为主要目的,代码的出处已经找不到了,还请见谅,以下主要是针对csv&excel 和t ...

  2. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...

  3. 【SqlServer】在SqlServer中把数据导入导出为Excel文件

    这里笔者介绍利用SqlServer数据库操作EXECEL文件. 1.将Excel表中的数据导入为SqlServer数据库 把Excel表中的数据导入为SqlServer数据库中的数据. 新建一个Exc ...

  4. 【Python】通过python代码实现demo_test环境的登录,通过csv/txt/excel文件批量添加课程并开启课程操作--(刚开始 项目 页面 模块 元素这种鸟 被称作pageobject 等这些搞完 然后把你的定位器、数据 和脚本在分离 就是传说中那个叫数据驱动 的鸟)

    一.1.通过csv文件批量导入数据 1 from selenium import webdriver from time import ctime,sleep import csv #循环读取每一行每 ...

  5. ssm框架之将数据库的数据导入导出为excel文件

    在这里首先我要将自己遇到的各种问题,以及需求记录下来,做一个备忘,便于以后查看: 需求:主要实现两个功能,将oracle数据库里的数据导出为excel,同时需要将excel表格的数据导入到数据库 环境 ...

  6. C#导出数据到CSV和EXCEL文件时数字文本被转义的解决方法

    今天写C#导出datagrid数据到csv格式文件的时候,发现不管怎么尝试,凡是单元格里面全是数字的单元格,在用Excel打开的时候,都被自动转义成数据格式.数据查看极其不方便.最后google了一下 ...

  7. Python json数据写入csv json excel文件

    一.写入 写入csv和json, 可以使用csv这个包写, 我这里没有使用, 并且把写csv和json的写到一起了 具体的代码就不解释了 def write_file(file_name, items ...

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

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

  9. c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出

    将List集合的数据写到一个Excel文件并导出示例: using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using Sys ...

随机推荐

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON Roberts1

    zw版[转发·台湾nvp系列Delphi例程]HALCON Roberts1 procedure TForm1.Button1Click(Sender: TObject);var img, img1: ...

  2. MySQL从删库到跑路(四)——MySQL数据库创建实例

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.创建数据库 1.创建数据库 创建数据库,指定数据库的默认字符集为utf8.create database sch ...

  3. “System.Data”中不存在类型或命名空间名称“TypedTableBase”

    错误 1 命名空间“System.Data”中不存在类型或命名空间名称“TypedTableBase”(是否缺少程序集引用?)  解决方案 因为是把强类型DataSet文件绑定报表的项目中出现的错误, ...

  4. Linux服务器---基础设置

    Centos分辨率      virtualbox里新安装的Centos 7 的分辨率默认的应该是800*600. 如果是‘最小化安装’的Centos7 进入的就是命令模式 .如果安装的是带有GUI的 ...

  5. fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument

    fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument <error>status:4 er ...

  6. mysql的数据类型和字符集

    MySQL的数据类型 MySQL数据库支持的数据类型主要有以下几种: 整型 浮点型 字符 BLOB型 枚举和集合类型 JSON类型(MySQL5.7新增加的支持) 整型 整数类型是数据库中最基本的数据 ...

  7. SP211 PRIMIT - Primitivus recurencis(欧拉回路)

    SP211 PRIMIT - Primitivus recurencis 欧拉回路 Warning: enormous Input/Output data 警告:巨大的输入/输出 经过若干(11)次提 ...

  8. JavaScript 获取和修改 内联样式

    JavaScript 获取和修改 内联样式 版权声明:未经授权,严禁转载分享! 元素的样式 HTML 元素的 style 属性返回一个 CSSStyleDeclaration 类型的对象. Style ...

  9. 20145109竺文君、20145106石晟荣 java实验三

    重构的概念:重构(Refactoring)就是通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 首先由zwj在<git.oschina.net& ...

  10. Android实践项目汇报(总结)

    天气客户端开发报告 1    系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还 ...