设置与查看 data.table 的键

在 R 中使用 data.table 进行数据表连接

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

设置 data.table 键

设置键意味着在连接时无需使用 on 参数

  • 当同一 data.table 需要用于多次不同连接时很有用

会按键列在内存中对 data.table 排序

  • 加快筛选和连接

可将多列设为键并使用

在 R 中使用 data.table 进行数据表连接

`setkey()` 函数

将键列作为参数传入

setkey(DT, ...)
setkey(DT, key1, key2, key3)

setkey(DT, "key1", "key2", "key3")
# 将 DT 的所有列设为键
setkey(DT)
在 R 中使用 data.table 进行数据表连接

`setkey()` 函数

在连接前为两个 data.table 都设置键

setkey(dt1, dt1_key)
setkey(dt2, dt2_key)

执行内连接、右连接和左连接:

# 内连接 dt1 和 dt2
dt1[dt2, nomatch = 0] 

# 右连接 dt1 和 dt2 dt1[dt2]
# 左连接 dt1 和 dt2 dt2[dt1]
在 R 中使用 data.table 进行数据表连接

以编程方式设置键

以字符向量提供键列

keys <- c("key1", "key2", "key3")
setkeyv(dt, keys)
在 R 中使用 data.table 进行数据表连接

获取键

haskey() 检查是否已设置键

haskey(dt1)
TRUE

key() 返回已设置的键列

key(dt1)
"dt1_key"
在 R 中使用 data.table 进行数据表连接

获取键

未设置键时

haskey(dt_no_key)
FALSE
key(dt_no_key)
NULL
在 R 中使用 data.table 进行数据表连接

查看所有 data.table 及其键

tables()
     NAME        NROW NCOL MB COLS                       KEY           
[1,] dt             3    4  1 key1,key2,key3,value       key1,key2,key3
[2,] dt1        1,000    3  1 dt1_key_column,value,group dt1_key
[3,] dt2        1,000    2  1 dt2_key_column,time        dt2_key
[4,] dt_no_key      5    2  1 id,color                                 
Total: 4MB
在 R 中使用 data.table 进行数据表连接

Passons à la pratique !

在 R 中使用 data.table 进行数据表连接

Preparing Video For Download...