什么是data.table

Matt Dowle以及其他作者写的一个数据处理包,目的是追求high-performance数据处理,和dplyr相比,data.table速度更快、导入数据和处理数据的速度都更快,但写法没有那么简洁、易写易懂。

R_series_article2_rdatatable.jpg

基本范式实现

library(pacman)
p_load(data.table)

创建

tidyverse具有tibble的数据结构,而data.table具有data.table的数据结构,是data.frame的增强模式,特征如下:

  1. 从不会自动把字符型变量变成因子型变量;

  2. 行标号与数据直接用冒号隔开,以示分隔;

  3. 当记录超过n行时,默认n=100,自动显示前5列和后5列(和python的pandas略像),可以用options来设定n值,也可以用getOption("datatable.print.nrows")进行查询;

  4. data.table从来不使用行名称。

内部创建(data.table)

DT = data.table(
  ID = c('b', 'b', 'b', 'a', 'a', 'c'),
  a = 1:6,
  b = 7:12,
  c = 13:18
)
DT

# 数据结构显示,它既是一个data.table也是一个data.frame
str(DT)

强制转换(as.data.table/setDT)

将一个data.frame转换成data.table有两种函数,一种是as.data.table,另一种setDT。前者是格式转换,后者是引用转换,转换后不需要赋值原始变量直接变成data.table。