【数据处理】R语言--data.table介绍以及例子

本文介绍了R语言中的data.table包,强调其在大数据处理中的高速性能。内容包括data.table的创建、行与列的提取与修改、索引键的使用以及分类汇总操作。data.table提供了快速的列名修改、列的添加与删除、单列与多列索引等功能,适合高效处理复杂数据任务。
摘要由CSDN通过智能技术生成

R—data.table介绍以及例子

相比dplyr包,data.table包能够更大程度地提高数据的处理速度,这里就简单介绍一下data.tale包的使用方法。

data.table:用于快速处理大数据集的

1.数据的读取

data.table包中数据读取的函数:fread()

2.data.table的创建

> library(data.table)
> DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
> DT
   x y v
1: a 1 1
2: a 3 2
3: a 6 3
4: b 1 4
5: b 3 5
6: b 6 6
7: c 1 7
8: c 3 8
9: c 6 9
> 

3.基础操作

(1)行提取

行提取分为单行提取和多行提取。

单行提取

> DT[2]                      # 2nd row
   x y v
1: a 3 2

> DT[2,]                     # same
   x y v
1: a 3 2
> 

这里DT [2]和DT [2]是完全相同的,这里的「,」只是说明还有其他参数可设置,而其他参数按默认值进行计算。下文所有这样的最后一个「,」都不再写出来。

多行提取

数字提取

> DT[1:2]
   x y v
1: a 1 1
2: a 3 2

> DT[c(2,5)]
   x y v
1: a 3 2
2: b 3 5
> 
(2)逻辑提取
DT[c(FALSE,TRUE)]          # even rows (usual recycling)
    x y v
 1: a 3 2
 2: b 1 4
 3: b 6 6
 4: c 3 8

此时,C(FALSE,TRUE)会自己重复匹配成与DT的行数相同的向量

(3)列提取

与行提取相同,列的提取也包含单列提取和多列提取。

单列提取

数字提取
数字提取时,一定要把问心无愧参数设置为FALSE。

> DT[,2,with=FALSE]          # 2nd column
   y
1: 1
2: 3
3: 6
4: 1
5: 3
6: 6
7: 1
8: 3
9: 6
> DT[,2,with=TRUE]          # 2nd column
   y
1: 1
2: 3
3: 6
4: 1
5: 3
6: 6
7: 1
8: 3
9: 6
> 

按照列名提取


> DT[,list(v)]      # v column (as data.table)
   v
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
(4)列名的修改

列名的修改可以使用setnames()函数,这个函数好像比对data.frame类型数据名更改的名称()和colnames()函数也要快一些。

> dt = data.table(a=1:2,b=3:4,c=5:6) # compare to data.table
> dt
   a b c
1: 1 3 5
2: 2 4 6
> try(tracemem(dt))                  # by reference, no deep or shallow copies
[1] "<000000001C613E10>"
> dt
   a b c
1: 1 3 5
2: 2 4 6
> setnames(dt,"b","B")               # by name, no match() needed (warning if "b" is missing)
> dt
   a B c
1: 1 3 5
2: 2 4 6
> setnames(dt,3,"C")                 # by position with warning if 3 > ncol(dt)
> dt
   a B C
1: 1 3 5
2: 2 4 6
> setnames(dt,2:3,c("D","E"))        # multiple
> dt
   a D E
1: 1 3 5
2: 2 4 6
> setnames(dt,c("a","E"),c("A","F")) # multiple by name (warning if either "a" or "E" is missing)
> dt
   A D F
1: 1 3 5
2: 2 4 6
> setnames(dt,c("X","Y","Z"))        # replace all (length of names must be == ncol(DT))  
> dt
   X Y Z
1: 1 3 5
2: 2 4 6
> 

多列提取

数字提取
如同上面对按数字对单列的提取,对多列提取也要设置与参数为FALSE。


> DT[,2:3,with=FALSE]
   y v
1: 1 1
2: 3 2
3: 6 3
4: 1 4
5: 3 5
6: 6 6
7: 1 7
8: 3 8
9: 6 9
> DT[,c(1,3),with=FALSE] 
   x v
1: a 1
2: a 2
3: a 3
4: b 4
5: b 5
6: b 6
7: c 7
8: c 8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值