Definindo e visualizando chaves em data.table

Combinando dados com data.table em R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

Definindo chaves em `data.table`

Definir chaves evita precisar do argumento on ao fazer joins

  • Útil quando você usa um data.table em vários joins

Ordena o data.table em memória pelas colunas-chave

  • Deixa filtragens e joins mais rápidos

Várias colunas podem ser definidas e usadas como chaves

Combinando dados com data.table em R

A função `setkey()`

As colunas-chave são passadas como argumentos

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

setkey(DT, "key1", "key2", "key3")
# Para definir todas as colunas de DT como chaves
setkey(DT)
Combinando dados com data.table em R

A função `setkey()`

Defina as chaves de ambos os data.tables antes do join

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

Faça inner, right e left joins:

# Inner join entre dt1 e dt2
dt1[dt2, nomatch = 0] 

# Right join entre dt1 e dt2 dt1[dt2]
# Left join entre dt1 e dt2 dt2[dt1]
Combinando dados com data.table em R

Definindo chaves programaticamente

As colunas-chave são fornecidas como um vetor de caracteres

keys <- c("key1", "key2", "key3")
setkeyv(dt, keys)
Combinando dados com data.table em R

Obtendo chaves

haskey() verifica se você definiu chaves

haskey(dt1)
TRUE

key() retorna as colunas-chave definidas

key(dt1)
"dt1_key"
Combinando dados com data.table em R

Obtendo chaves

Quando não há chaves definidas

haskey(dt_no_key)
FALSE
key(dt_no_key)
NULL
Combinando dados com data.table em R

Visualizando todos os `data.tables` e suas chaves

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
Combinando dados com data.table em R

Vamos praticar!

Combinando dados com data.table em R

Preparing Video For Download...