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)
執行 inner、right、left 連接:
# Inner 連接 dt1 與 dt2 dt1[dt2, nomatch = 0]# Right 連接 dt1 與 dt2 dt1[dt2]# Left 連接 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 資料合併