การกำหนดและดู key ของ data.table

การ Join ข้อมูลด้วย data.table ใน R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

การกำหนด key ของ `data.table`

การกำหนด key ช่วยให้ไม่ต้องใช้อาร์กิวเมนต์ on เวลา join

  • เหมาะเมื่อต้องใช้ data.table ใน join หลายครั้ง

จัดเรียง data.table ในหน่วยความจำตามคอลัมน์ key

  • ทำให้การกรองและ join ทำงานได้เร็วขึ้น

สามารถกำหนดหลายคอลัมน์เป็น key ได้

การ Join ข้อมูลด้วย data.table ใน R

ฟังก์ชัน `setkey()`

ส่งคอลัมน์ key เป็นอาร์กิวเมนต์

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

setkey(DT, "key1", "key2", "key3")
# To set all columns in DT as keys
setkey(DT)
การ Join ข้อมูลด้วย data.table ใน R

ฟังก์ชัน `setkey()`

กำหนด key ให้ data.table ทั้งสองก่อน join

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

ทำ inner, right และ left join:

# Inner join dt1 and dt2
dt1[dt2, nomatch = 0] 

# Right join dt1 and dt2 dt1[dt2]
# Left join dt1 and dt2 dt2[dt1]
การ Join ข้อมูลด้วย data.table ใน R

การกำหนด key แบบ programmatic

ส่งคอลัมน์ key เป็น character vector

keys <- c("key1", "key2", "key3")
setkeyv(dt, keys)
การ Join ข้อมูลด้วย data.table ใน R

การดู key

haskey() ตรวจสอบว่ามีการกำหนด key หรือไม่

haskey(dt1)
TRUE

key() คืนค่าคอลัมน์ key ที่กำหนดไว้

key(dt1)
"dt1_key"
การ Join ข้อมูลด้วย data.table ใน R

การดู key

เมื่อยังไม่ได้กำหนด key

haskey(dt_no_key)
FALSE
key(dt_no_key)
NULL
การ Join ข้อมูลด้วย data.table ใน R

ดู `data.table` ทั้งหมดและ key ของแต่ละตาราง

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
การ Join ข้อมูลด้วย data.table ใน R

มาฝึกกันเถอะ!

การ Join ข้อมูลด้วย data.table ใน R

Preparing Video For Download...