R(7): data.table
这个包让你可以更快地完成数据集的数据处理工作。放弃选取行或列子集的传统方法,用这个包进行数据处理。用最少的代码,你可以做最多的事。相比使用data.frame,data.table可以帮助你减少运算时间。一个数据表格包含三部分,即DT[i, j, by]。你可以理解为我们告诉R用i来选出行的子集,并计算通过by来分组的j。大多数时候,by是用于类别变量的。
特点
- data.table(DT)的操作语句类似于SQL,DT[i, j, by]中的i, j, by 对应着SQL语句的 i=where, j=select, by=group by。所以DT中的i, j并不是只是像data.frame只代表着行列,它更加的灵活多变
- 符号 ” := “快速的增加或者删除列,类似SQL的update。
- setkey(DT, colA, colB),可以使得检索和分组更加快速
- order,快速多重排序, 例如对DT按照x,y进行排序DT[order(DT$x, -DT$y),]或者DT[with(DT, order(x, -y))
示例
安装及载入程序包
install.packages("data.table")
library(data.table)
- 使用data.table的fread()函数,用下面的方式,快速直接读取航班数据
flights <- fread("https://raw.githubusercontent.com/wiki/arunsrinivasan/flights/NYCflights14/flights14.csv")
- 查看数据
> mydata <- data.table(iris) 
 > mydata
 Sepal.Length Sepal.Width Petal.Length Petal.Width Species
 1: 5.1 3.5 1.4 0.2 setosa
 2: 4.9 3.0 1.4 0.2 setosa
 3: 4.7 3.2 1.3 0.2 setosa
 4: 4.6 3.1 1.5 0.2 setosa
 5: 5.0 3.6 1.4 0.2 setosa
 ---
 146: 6.7 3.0 5.2 2.3 virginica
 147: 6.3 2.5 5.0 1.9 virginica
 148: 6.5 3.0 5.2 2.0 virginica
 149: 6.2 3.4 5.4 2.3 virginica
 150: 5.9 3.0 5.1 1.8 virginica
- 条件选择
> mydata[Species =="setosa" & Sepal.Length > 5.0 & Sepal.Width == 3.5,c("Sepal.Length","Sepal.Width","Species")]
 Sepal.Length Sepal.Width Species
 1: 5.1 3.5 setosa
 2: 5.1 3.5 setosa
 3: 5.2 3.5 setosa
 4: 5.5 3.5 setosa
- 计算:.() 表示list
> mydata[,sum(Sepal.Length,na.rm = TRUE)] 
 [1] 876.5
 > mydata[,.(sum(Sepal.Length,na.rm = TRUE),sd(Sepal.Length),mean(Sepal.Length)),by=Species]
 Species V1 V2 V3
 1: setosa 250.3 0.3524897 5.006
 2: versicolor 296.8 0.5161711 5.936
 3: virginica 329.4 0.6358796 6.588
上面的函数等价于:
mydata[,list(V1=sum(Sepal.Length,na.rm = TRUE),
V2=sd(Sepal.Length),
V3=mean(Sepal.Length)),
by=.(Species)]
- 函数
mydata[,{
 print(Sepal.Length)
 plot(Sepal.Width)
 }]
- setkey - setkey(mydata,Species) 
 mydata["setosa"]
 mydata[c("setosa","virginica")]
- 排序 - > mydata[order(Sepal.Length,-Sepal.Width)] 
 Sepal.Length Sepal.Width Petal.Length Petal.Width Species
 1: 4.3 3.0 1.1 0.1 setosa
 2: 4.4 3.2 1.3 0.2 setosa
 3: 4.4 3.0 1.3 0.2 setosa
 4: 4.4 2.9 1.4 0.2 setosa
 5: 4.5 2.3 1.3 0.3 setosa
 ---
 146: 7.7 3.8 6.7 2.2 virginica
 147: 7.7 3.0 6.1 2.3 virginica
 148: 7.7 2.8 6.7 2.0 virginica
 149: 7.7 2.6 6.9 2.3 virginica
 150: 7.9 3.8 6.4 2.0 virginica
- 特别的符号 .N 是一个内建的变量,它表示当前的分组中,对象的数目
> mydata[Species =="setosa" & Sepal.Length > 5.0 & Sepal.Width == 3.5,.N] 
 [1] 4
- 如何获取每个机场起飞的航班数 - > flights[, .(.N), by=.(origin)] 
 origin N
 1: JFK 81483
 2: LGA 84433
 3: EWR 87400
- 当参数j和by里面只有一列,我们可以省略 .(),如:ans <- flights[, .N, by=origin] 
- 如何获取美航在所有机场的起/降的数目
> ans <- flights[carrier == "AA", .N, by=.(origin,dest)] 
 > head(ans)
 origin dest N
 1: JFK LAX 3387
 2: LGA PBI 245
 3: EWR LAX 62
 4: JFK MIA 1876
 5: JFK SEA 298
 6: EWR MIA 848
- 如何获取美航在所有机场的起/降的平均延误时间
> flights[carrier == "AA", 
 + .(mean(arr_delay), mean(dep_delay)),
 + by=.(origin, dest, month)]
 origin dest month V1 V2
 1: JFK LAX 1 6.590361 14.2289157
 2: LGA PBI 1 -7.758621 0.3103448
 3: EWR LAX 1 1.366667 7.5000000
 4: JFK MIA 1 15.720670 18.7430168
 5: JFK SEA 1 14.357143 30.7500000
 ---
 196: LGA MIA 10 -6.251799 -1.4208633
 197: JFK MIA 10 -1.880184 6.6774194
 198: EWR PHX 10 -3.032258 -4.2903226
 199: JFK MCO 10 -10.048387 -1.6129032
 200: JFK DCA 10 16.483871 15.5161290
R(7): data.table的更多相关文章
- R之data.table -melt/dcast(数据合并和拆分)
		p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 30.0px "Helvetica Neue"; color: #323333 } p. ... 
- R之data.table速查手册
		R语言data.table速查手册 介绍 R中的data.table包提供了一个data.frame的高级版本,让你的程序做数据整型的运算速度大大的增加.data.table已经在金融,基因工程学等领 ... 
- R语言data.table包fread读取数据
		R语言处理大规模数据速度不算快,通过安装其他包比如data.table可以提升读取处理速度. 案例,分别用read.csv和data.table包的fread函数读取一个1.67万行.230列的表格数 ... 
- R语言数据分析利器data.table包 —— 数据框结构处理精讲
		R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ... 
- R语言基因组数据分析可能会用到的data.table函数整理
		R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部 ... 
- 将基因组数据分类并写出文件,python,awk,R data.table速度PK
		由于基因组数据过大,想进一步用R语言处理担心系统内存不够,因此想着将文件按染色体拆分,发现python,awk,R 语言都能够非常简单快捷的实现,那么速度是否有差距呢,因此在跑几个50G的大文件之前, ... 
- R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)
		每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于业务中接触的数据量很大,于是不得不转战开始 ... 
- R读取大数据data.table包之fread
		>library(data.table)>data=fread("10000000.txt")>Read 9999999 rows and 71 (of 71) ... 
- R语言数据分析利器data.table包—数据框结构处理精讲
		R语言数据分析利器data.table包-数据框结构处理精讲 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代 ... 
随机推荐
- PHP:第三章——PHP中控制函数的函数
			<pre> <?php header("Content-Type:text/html;charset=utf-8"); /******************** ... 
- PHP:第三章——PHP中函数的实参多余形参的处理方法
			<?phpheader("Content-Type:text/html;charset=utf-8");//传参的函数/*function F($a){ echo $a ... 
- httpclient 连接参数
			http.socket.timeout(读取超时) 套接字毫秒级超时时间(SO_TIMEOUT),这就是等待数据,换句话说,在两个连续的数据包之间最大的闲置时间. 如果超时是0表示无限大的超时时间,即 ... 
- vue-compile概述
			来源 刘涛 Vue的核心可以分为三个大块:数据处理和双向绑定.模板编译.虚拟dom. 前面我们对第一部分的主要内容双向绑定做了一个分析讲解,接下来我们说一说模板编译. 这一部分的内容比较多,也比较复杂 ... 
- anu - reactIE
			import { options } from "./util"; import { Children } from "./Children"; import ... 
- ios 从网络上获取图片
			-(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ... 
- Oracle中varchar2类型字段长度限制使用问题
			为纪念中华人民共和国建军90周年,特此一篇,以此纪念,我军威武!!! 一.问题背景 项目中商品发布,却没有保存成功. 二.问题定位 初步判断向数据库中保存时出现了错误,查看日志文件,由于日志文件过大就 ... 
- tomcat版本号的修改
			我的是8.5.0我将其改为8.0.0 其他版本改也是一样 我改这个版本号就是因为eclipse上没有tomcat8.5.0的配置 所以将其改为8.0.0 在配置web服务器时 ... 
- Codeforces Round #252 (Div. 2) D
			http://codeforces.com/problemset/problem/441/D 置换群的基本问题,一个轮换内交换成正常顺序需要k-1次,k为轮换内元素个数 两个轮换之间交换元素,可以把两 ... 
- ZooKeeper安装,部署
			实验环境 192.168.1.10 Zookeeper1:2181, Zookeeper2:2182 192.168.1.11 ZooKeeper3:2181 依赖环境 JDK1.7 安装,配置 1. ... 
