EXCEL 导入 R 的几种方法 R—readr和readxl包
导入Excel数据至R语言的几种方法
一、使用剪贴板,然后使用read.table函数;
首先选择Excel中的数据源,然后复制;
在Rstudio中输入如下脚本,回车即可;
read.table("clipboard", header = TRUE)
注:header = TRUE,表示首行为标题行,若为FALSE则标题行也算在正文第一行,结果如下;
二、将Excel另存为csv文件,然后使用read.csv函数;
打开Excel数据源,另存为example.csv文件;路径为【C:\Users\Administrator\Desktop\example】
然后在Rstudio中输入如下代码,回车即可:
read.csv("C:/Users/Administrator/Desktop/example/example.csv", header = TRUE)
这里的header参数与使用剪贴板中的header参数用法一致,在此不在赘述;
注:在R中“\”是一个转义字符,故需要将路径中的“\”字符,使用“/”替代,或使用"\\"替代;
三、将Excel另存为txt文本文件,然后使用read.table函数;
打开Excel数据源,另存为example.txt文件;路径为【C:\Users\Administrator\Desktop\example】
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDQzA1MTVGNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDQzA1MTYwNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkNDMDUxNUQ2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkNDMDUxNUU2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6p+a6fAAAAD0lEQVR42mJ89/Y1QIABAAWXAsgVS/hWAAAAAElFTkSuQmCC" alt="" data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz/I8eL65NXoR4nDmG25EBC8RHZ80mFxiajabYeWTe0LsBticicy7uBo5tIQyLzoULHgasKcPJyibDvCC3lljnmvJb6PA/0?wx_fmt=png" data-ratio="0.35106382978723405" data-w="470" />
然后在Rstudio中输入如下代码,回车即可;
read.table("C:/Users/Administrator/Desktop/example/example.txt", header = TRUE)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDQzA1MTVGNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDQzA1MTYwNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkNDMDUxNUQ2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkNDMDUxNUU2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6p+a6fAAAAD0lEQVR42mJ89/Y1QIABAAWXAsgVS/hWAAAAAElFTkSuQmCC" alt="" data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz/I8eL65NXoR4nDmG25EBC8RHZ80mFxiaja8FntCFpr4l1ajlTTvTy7aKADiayzqmribyrZZQtGKCqnd0dpw0w5Xtvw/0?wx_fmt=png" data-ratio="0.28776978417266186" data-w="" />
四、使用RODBC包(xls格式Excel文件)
之前使用过RODBC包连接过Postgresql,回复【postgresql】可查看相关文章;这是里同样可以 使用RODBC中的odbcConnectExcel来创建与Excel的连接,获取Excel中的数据;
> install.packages("RODBC")
> library(RODBC)
> conn <- odbcConnectExcel("C:/Users/Administrator/Desktop/example/example.xls")
> sqlTables(conn)
> sqlFetch(conn, "example")
> sqlQuery(conn, "select * from [example$]")
> odbcClose(conn)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDQzA1MTVGNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDQzA1MTYwNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkNDMDUxNUQ2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkNDMDUxNUU2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6p+a6fAAAAD0lEQVR42mJ89/Y1QIABAAWXAsgVS/hWAAAAAElFTkSuQmCC" alt="" data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz/I8eL65NXoR4nDmG25EBC8RHZ80mFxiajaC2nG4S1OtrBpMLaOqC3zlcJZgzSUcpz4yj3OC3ZcxHjYM7OjYqqvTA/0?wx_fmt=png" data-ratio="0.7535971223021583" data-w="" />
其中example.xls中一个Excel文件(2003版本格式),example是工作薄中要读取数据的工作表的名称,conn是一个由odbcConnectExcel()返回的RODBC连接对象,mydataframe是返回的数据框。注:RODBC也可用于从Access导入数据,具体可以查看help(RODBC)帮助;
注:xlsx格式的Excel文件(2007、2010版)导入R语言会出错,可用xlsx包来读取这种格式的电子表格,脚本如下:
> install.packages("xlsx")
> library(xlsx)
> workbook <- "C:/Users/Administrator/Desktop/example/example.xlsx"
> mydataframe <- real.xlsx(workbook, 1)
> mydataframe
今天介绍了几种导入Excel中的数据至R语言中的方法,包括利用剪贴板、通过将Excel导入csv格式或txt格式的文件,以及利用RODBC包(或xlsx包)的方法;鉴于xls版本较为老旧,建议采取前三种方法导入Excel数据;
read.talbe以及read.csv及RODBC中相关函数的参数都很多,文章中只用了几个常见的参数,其余参数均采取了默认的设置,可利用?read.talbe或help(read.table)等语法来查询相关函数的具体帮助说明,例如使用?read.talbe语法查询帮助;
read.table的函数参数非常多,同时也会列出相关的函数,但最常用的也就几个,如下:
read.table(file, header = FALSE, sep = "", quote = "\"'",dec = ".", skip = 0,strip.white = FALSE, blank.lines.skip = TRUE,comment.char = "#")
file,表示要读取的文件:file可以是①绝对路径或者相对路径,但是一定要注意,在R中“\”是转义符,故路径需要写成“/”或者“\\”; ②使用剪贴板;③使用file.choose(),弹出对话框,让你选择文件的位置。
header,表示数据文件中第一行是不是标题。默认为F(FALSE),认为数据文件中无标题;
sep,指定分隔符,默认是空格。quote是引号,默认是双引号。dec是小数点的表示,默认就是一个点。skip是确定是否跳过某些行。strip.white确定是否消除空白字符。blank.lines.skip确定是否要跳过空白行。comment.char指定用于表示注释的引导符号。
将数据快速读入R—readr和readxl包
大 数 据 人
报道DT时代应用资讯及动态,爆料剖析行业热点新闻
Hadley Wickham 和 RStudio团队写了一些新的R包,这些包对于每个需要在R中读入数据的人来说都是非常有用的。readr包提供了一些在R中读入文本数据的函数。readxl包提供了一些在R中读入Excel电子表格数据的函数。它们的读取速度远远超过你目前正在用的一些函数。
readr包提供了若干函数在R中读取数据。我们通常会用R中的read.table家族函数来完成我们的数据读入任务。这里,readr包提供了许多替代函数。它们增加了额外的一些功能并且速度快很多。
首先,read_table几乎代替了read.table。下面通过读取一个包含400万行的数据来比较它们的区别。点击这里下载该数据。
注1:在演示之前简单说下我电脑的配置:win7,64位操作系统,8G内存,CPU A6双核。电脑配置不行,原文给出的实验时间甩了我好几条街。但不管怎样,在现有的条件下效率确实提高了很多。原文用时见末尾链接。
注2:如果读取中文数据出现乱码,在编辑器设置下字符编码为"UTF-8"
system.time(read_table("C:\\Users\\a\\Desktop\\biggerfile.txt",
                       col_names=c("DAY","MONTH","YEAR","TEMP")))
system.time(read.table("C:\\Users\\a\\Desktop\\biggerfile.txt",
                       col.names=c("DAY","MONTH","YEAR","TEMP")))这些命令看上去非常相似,但是read.table花的时间是50.62秒,而read_table完成相同的任务只花了2.76秒。这是因为read_table把数据当做是固定格式的文件,并且使用C++快速处理数据。
R中的基础包utils也有读取固定宽度数据的函数,下面的示例就能体现出readr的亮点:
system.time(read_fwf("C:\\Users\\a\\Desktop\\biggerfile.txt",
                      fwf_widths(c(3,15,16,12),
                      col_names=c("DAY","MONTH","YEAR","TEMP"))))
system.time(read.fwf("C:\\Users\\a\\Desktop\\biggerfile.txt",
                     c(3,15,16,12),
                     col.ames=c("DAY","MONTH","YEAR","TEMP")))readr包的read_fwf函数用时3.97秒,而标准的read.fwf函数耗时1372秒。
readr包中的其它函数包括:read_csv读取逗号分隔的数据(欧洲用的是read_csv2函数),read_tsv读取制表符分隔数据,read_lines函数从文件中逐行读取数据(非常适合复杂的后期处理)。它还可以读取多种格式的日期时间列,智能的将文本数据读取为字符串(不再需要设置strings.as.factors=FALSE)。
对于Excel格式的数据,这里有readxl包。这个包提供的函数可以读取.xls和.xlsx格式的Excel工作表。虽然这里没有演示read_execl函数的使用,但是它跟readr中的函数一样都是基于C++库的,因此读取速度应该也很快。最重要的是,它没有任何的外部依赖,因此你可以在任意平台上用它来读取数据—不要求安装了Excel。
readr包已发布在CRAN上,readxl可以从github安装。
github地址:https://github.com/hadley/readxl
EXCEL 导入 R 的几种方法 R—readr和readxl包的更多相关文章
- Excel导入oracle的几种方法
		http://www.jb51.net/list/list_154_1.htm 方法一.使用SQL*Loader这个是用的较多的方法,前提必须oracle数据中目的表已经存在.大体步骤如下:1.将ex ... 
- SQLSERVER数据库中批量导入数据的几种方法
		第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ... 
- 规模数据导入高效方式︱将数据快速读入R—readr和readxl包
		本文由雪晴数据网负责翻译整理,原文请参考New packages for reading data into R - fast作者David Smith.转载请注明原文链接http://www.xue ... 
- R语言-三种方法绘制单位圆
		与一般开发语言不同,R以数据统计分析和绘图可视化为主要卖点.本文是第一篇博客,解决一个简单的绘图问题,以练手为目的. 以下直接给出三种单位圆的画法: 方法1 f=seq(,*pi,0.001) x=s ... 
- SQL Server数据导入导出的几种方法
		在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ... 
- python导入数据的几种方法
		以下是在我学习过程中常用的两种导入数据的方式 方法一: c = open('ML2017Data/testTarget.csv',"r") file = csv.reader(c) ... 
- Hive导入数据的四种方法
		Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在 ... 
- oracle数据的导入导出(两种方法三种方式)
		大概了解数据库中数据的导入导出.在oracle中,导入导出数据的方法有两种,一种是使用cmd命令行的形式导入导出数据,另一种是使用PL/SQL工具导入导出数据. 1,使用cmd命令行导入导出数据 1. ... 
- 前端下载excel文件功能的三种方法
		1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ... 
随机推荐
- Sentinel限流示例:编码和注解限流
			一.Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. Sentine ... 
- BigDecimal求余操作
			BigDecimal求余操作如下: package com.qiu.lin.he; import java.math.BigDecimal; public class CeShi { public s ... 
- Angular2 如何使用jquery
			网上找了很多版本尝试都不行,最后在stackoverflow上找到一个,尝试完美解决 具体操作步骤如下 1. 安装jquery npm install jquery 2.安装 type for jqu ... 
- JAVA构造函数在超类和子类调用注意事项
			1.构造函数: 当子类继承一个父类时,构造子类时需要调用父类的构造函数,存在三种情况 (1),父类无构造函数或者一个无参数构造函数,子类若无构造函数或者有无参数构造函数,子 ... 
- 浏览器发起Get,Post请求时候传递的参数编码问题
			浏览器发起Get,Post请求时候传递的参数编码问题 最近开发一个网站的时候,用了很多ajax方法,在页面发起Get,post请求,中间自然捎带有很多参数,有中文,有英文,英文一般是不存在编码问题的, ... 
- Monkey测试工具介绍
			---------------------------------------------------------------------------------------------------- ... 
- python学习整理
			Python-copy()与deepcopy()区别 —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. ... 
- Hp培训学习注册攻略
			输入h20507.www2.hp.com/Saba/Web/Main用以注册的Hp partner portnal账户登入, 
- preprocess
			1,宏定义,有参宏,无参宏,宏定义实现的是定义一个符号常量; 条件编译3种方式,文件包含含义; 不带参数的宏定义;既用一个指定的的标识符来代替一个字符串; #define RUIY 10000000 ... 
- sql之将一个表中的数据注入另一个表中
			sql之将一个表中的数据注入另一个表中 需求:现有两张表t1,t2,现需要将t2的数据通过XZQHBM相同对应放入t1表中 t1: t2: 思路:left join 语句: select * from ... 
