R 中大规模数据的整理与分析

上传人:d****y 文档编号:98002183 上传时间:2019-09-07 格式:PPTX 页数:36 大小:753.51KB
返回 下载 相关 举报
R 中大规模数据的整理与分析_第1页
第1页 / 共36页
R 中大规模数据的整理与分析_第2页
第2页 / 共36页
R 中大规模数据的整理与分析_第3页
第3页 / 共36页
R 中大规模数据的整理与分析_第4页
第4页 / 共36页
R 中大规模数据的整理与分析_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《R 中大规模数据的整理与分析》由会员分享,可在线阅读,更多相关《R 中大规模数据的整理与分析(36页珍藏版)》请在金锄头文库上搜索。

1、,R 中大规模数据的整理与分析,统计之都,第五届中国 R 语言会议,R 中大规模数据的整理与分析,1 / 33,概要,第五届中国 R 语言会议,1 大数据?,3,2 R 数 据 库 R ,4,一个你可能感兴趣的例子,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,2 / 33,大数据?,概要,第五届中国 R 语言会议,1,大数据?,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,3 / 33,大数据?,你眼中的大数据?,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,4 / 33,大数据

2、?,你眼中的大数据?,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,5 / 33,大数据?,你眼中的大数据?,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,6 / 33,R 数据库,概要,第五届中国 R 语言会议,2,R 数据库,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,7 / 33,R 数据库,简介,如果原始数据很大,但用来建模的数据较小,则可以先在数据库中 进行整理,然后通过 R 与数据库的接口提取数据 数据库适合存放和整理比较规整的数据,和 R 中的数据框有良好的 对应关

3、系,这也是 R 中绝大多数统计模型的标准数据结构 数据库中大部分的运算都不需要消耗很大的内存,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,8 / 33,R 数据库,R 中的数据库接口,RODBC DBI 系 列 (ROracle, RMySQL, RPostgreSQL, RSQLite) 在 R 的层面上遵循相同或类似的语法 RMySQL http:/biostat.mc.vanderbilt.edu/wiki/Main/RMySQL http:/.hk/search?q=site:http: /cos.name/cn/%20RMySQL RPostg

4、reSQL http:/ (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,9 / 33,R 数据库,数据库对比,重量级 (1G+),完整的商业支持。,中量级 (30M50M),功能强大。,轻量级 (300K),最大 (?) 的优势 在于数据库直接保存为单个文件, 便携性强。在 R 中无需另外安装。,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,10 / 33,R 数据库,连接数据库的主要步骤,1. 打开数据库,2. 提 交 SQL 语 句,3. 提取数据,4. 关闭数据库,邱怡轩 (统计之都),R 中大规模数据的整理与分析,20

5、12 年 5 月 26 日,11 / 33,R 数据库,打开数据库连接,&,# 使 用 RPostgreSQL 时 将 MySQL() 改 成 dbDriver(“PostgreSQL“) con = dbConnect(MySQL(), user = “root“, password = “donttellyou“, dbname = “my_db“),con = dbConnect(dbDriver(“SQLite“), dbname = “my_db.db“),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,12 / 33,R 数据库,查看表名、字段名

6、,&,&,table.names = dbListTables(con) fields.names = dbListFields(con, “my_table“),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,13 / 33,R 数据库,提交查询,&,&,# 结果集 res = dbSendQuery(con, “select * from my_table“) # 获取记录, n = -1 表示获取结果集中的所有记录 dat = fetch(res, n = 100),一步到位:,dat = dbGetQuery(con, “select * from

7、my_table limit 100“),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,14 / 33,R 数据库,关闭数据库连接,&,&,dbDisconnect(con),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,15 / 33,R 数据库,小结,只取出你需要的数据到内存 重点是编写 SQL 语句 一个用 R SQL 做回归的例子 http:/yixuan.cos.name/en/2011/10/ how-to-run-regression-on-large-datasets-in-r/ 可以使用 biglm

8、软件包直接对数据库中的表拟合广义线性模型,包 括普通回归、Logistic 回归等,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,16 / 33,R ,概要,第五届中国 R 语言会议,3,R ,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,17 / 33,R ,“ 简介,简单地说,ff 软件包的作用就是构建“硬盘版”的向量、矩阵和数 据框 内存中的对象可以通过 ff() 函数转存到硬盘中,而硬盘中的对象 也可以通过取下标的形式返回内存 ff 软件包及其扩展 ffbase 可以用很小的内存对数据进行读写、排 序、汇总、更

9、新等操作,其作用类似于数据库,但与 R 联系紧密, 操作方式与 R 中类似,无需编写复杂的 SQL 语句,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,18 / 33,R ,快速入门,创建一个长度为 1 亿、存储类型为 double 的 ff 向量,library(ff) v = ff(vmode = “double“, length = 1e+08),向量的真实存储位置,对象所占内存 vs. 对象所占硬盘,filename(v) object.size(v) # 内 存 file.info(filename(v)$size # 硬 盘,对向量元素进行赋值

10、 v1:1000 = rnorm(1000) vc(1:100, length(v),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,19 / 33,R ,快速入门 2,生成 ff 数据框,v1 = ff(vmode = “integer“, length = 100) v2 = ff(rnorm(100) dat = ffdf(v1 = v1, v2 = v2),取元素子集,dat1:5, ; dat, 2 # data.frame 对 象 dat1 # ffdf 对 象 dat1; dat$v2 # ff 对 象,读/写纯文本文件,dat2 = read

11、.csv.ffdf(file = “my_data.csv“),write.table.ffdf(dat, 邱怡轩 (统计之都),file = “export.txt“, R 中大规模数据的整理与分析,sep = “t“) 2012 年 5 月 26 日,20 / 33,R ,快速入门 3,数据汇总,library(ffbase) v = ff(rnorm(1e6); mean(v); quantile(v) # 目前可能有 bug,只能通过下述方法调用,修复后可直接 hist(v) ffbase:hist.ff(v),大数据抽样,bigsample(1e+08, 10) bigsample(

12、v, 10),排序,v.sorted = ffsort(v),print(v); print(v.sorted),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,21 / 33,R ,进阶,每一个 ff 对象都包含 R 中的对象和硬盘数据两部分 硬盘中存储真实的数据 内存中记录相关的文件信息,相当于一个“指针” 因此,ff 对象是“按引用”传递的,x = ff(rnorm(10) y = x y1:10 = 0 x,要复制对象,需要使用 clone() 函数,y = clone(x) y1 = 1 x,邱怡轩 (统计之都),R 中大规模数据的整理与分析,20

13、12 年 5 月 26 日,22 / 33,R ,进阶 2,将对象保存至工作空间,以便下次使用,obj = ff(rbinom(10000, 100, 0.5), vmode = “integer“) ffsave(obj, file = “D:/tmp/my_obj“),删除对象的硬盘数据文件,再删除整个对象,# 顺序不能反! delete(obj) rm(obj),加载之前已经保存的对象,并将其打开,ffload(“D:/tmp/my_obj“) open(obj) obj,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,23 / 33,R ,精华,i1

14、,i2,内存,硬盘,读取,更新,大数据处理的一般思路:分而治之 迭代下标,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,24 / 33,R ,精华 2,生成长度为 1 千万的正态随机数变量,每次对 10 万个元素赋值,v = ff(vmode = “double“, length = 1e+07) ffvecapply(vi1:i2 - rnorm(i2 - i1 + 1), X = v, BATCHSIZE = 1e+05, VERBOSE = TRUE),求向量前 20 万个元素之和,s = 0 ffvecapply(s - s + sum(vi1:i

15、2), X = v, N = 2e+05),邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,25 / 33,R ,精华 2,生成长度为 1 千万的正态随机数变量,每次对 10 万个元素赋值,v = ff(vmode = “double“, length = 1e+07) ffvecapply(vi1:i2 - rnorm(i2 - i1 + 1), X = v, BATCHSIZE = 1e+05, VERBOSE = TRUE),求向量前 20 万个元素之和,s = 0 ffvecapply(s - s + sum(vi1:i2), X = v, N = 2e+05),更多的用法,发挥你的想像力吧,邱怡轩 (统计之都),R 中大规模数据的整理与分析,2012 年 5 月 26 日,25 / 33,R ,小结,ff 可以将 R 中的向

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 数据库

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号