在 R 中使用 data.table 进行数据表连接
Scott Ritchie
Postdoctoral Researcher in Systems Genomics
设置键意味着在连接时无需使用 on 参数
data.table 需要用于多次不同连接时很有用 会按键列在内存中对 data.table 排序
可将多列设为键并使用
将键列作为参数传入
setkey(DT, ...)
setkey(DT, key1, key2, key3)setkey(DT, "key1", "key2", "key3")
# 将 DT 的所有列设为键
setkey(DT)
在连接前为两个 data.table 都设置键
setkey(dt1, dt1_key)
setkey(dt2, dt2_key)
执行内连接、右连接和左连接:
# 内连接 dt1 和 dt2 dt1[dt2, nomatch = 0]# 右连接 dt1 和 dt2 dt1[dt2]# 左连接 dt1 和 dt2 dt2[dt1]
以字符向量提供键列
keys <- c("key1", "key2", "key3")
setkeyv(dt, keys)
haskey() 检查是否已设置键
haskey(dt1)
TRUE
key() 返回已设置的键列
key(dt1)
"dt1_key"
未设置键时
haskey(dt_no_key)
FALSE
key(dt_no_key)
NULL
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 进行数据表连接