Você está na página 1de 2

Transformação de dados com data.

table : : CHEAT SHEET


Informação básica Manipule colunas por j Agrupe de acordo com by
“data.table” é um pacote extremamente rápido e de uso
eficiente de memória usado na transformação de dados em R. a a a dt[, j, by = .(a)] – agrupa linhas por
EXTRAIR
Ele funciona por converter o conjunto de dados nativo do R valores em colunas específicas.
(data.frame) em data.table que apresenta funcionalidades dt[, c(2)]
novas e melhoradas. O uso básico de data.tables segue: extrai colunas por número; anteceda números dt[, j, keyby = .(a)] – agrupa e
de colunas com “-” para remover colunas. simultaneamente e ordena linhas
dt[i, j, by] por valores em colunas específicas.

b c b c dt[, .(b, c)]


pegue data.table dt,
extrai colunas por nome. OPERAÇÕES AGRUPADAS COMUNS
subdivida linhas usando i
e manipule colunas por j, dt[, .(c = sum(b)), by = a] – sumariza linhas dentro de grupos.
agrupadas de acordo com by
SUMARIZAR dt[, c := sum(b), by = a] – cria uma nova coluna e computa linhas
data.tables também são data.frames, portanto funções que se dentro de grupos.
aplicam a data.frames também funcionam sobre data.tables a x dt[, .(x = sum(a))]
cria um data.table com novas colunas baseado no dt[, .SD[1], by = a] – extrai primeira linha de grupos.
valores sumarizados das linhas.
Crie um data.table funções de sumário como mean(), median(), min(),
dt[, .SD[.N], by = a] – extrai ultima linha de grupos.
max(), etc. podem ser usadas para sumarizar linhas
data.table(a = c(1, 2), b = c("a", "b"))
cria um data.table a partir do zero. Análogo ao data.frame(). COMPUTAR COLUNAS*
Encadeamento
c dt[, c := 1 + 2]
setDT(df)* ou as.data.table(df) 3 calcula e cria uma coluna baseado numa dt[…][…] – realiza sequência de operações em data.table por
converte um data.frame ou lista a um data.table. 3
expressão encadeamento de múltiplos “[]”.

a a c dt[a == 1, c := 1 + 2]
Subdivida linhas usando i 2
1
2
1
NA
3
computa uma coluna baseado numa expres-
são, mas apenas para um grupo de linhas Funções para data.tables
dt[1:2, ]
subdivide linhas baseado nos números
c d dt[, `:=`(c = 1 , d = 2)]
1 2 computa múltiplas colunas baseado em REORDENAR
(índices) das linhas. 1 2
diferentes expressões a b a b setorder(dt, a, -b)
1 2 1 2 reordena um data.table de acordo com
DELETAR COLUNAS 2 2 1 1
a a dt[a > 5, ] colunas especificadas; anteceda nomes de
1 1 2 2
2 6 subdivide linhas baseado em valores em uma colunas com “-” para ordens decrescentes.
6 ou mais colunas.
c dt[, c := NULL]
5 remove uma coluna.
* SET FUNCTIONS AND :=
OPERADORES LÓGICOS PARA USAR EM i CONVERTER TIPOS DE COLUNAS funções em data.table prefixadas com "set" e o operador ":="
funcionam sem "<-" para alterar os dados sem fazer cópias na
< <= is.na() %in% | %like% b b dt[, b := as.integer(b)] memória. Por exemplo, o mais eficiente "setDT(df)" é análogo a
> >= !is.na() ! & %between% 1.5 1 converte o tipo de coluna usando as.integer(), "df <- as.data.table(df)".
2.6 2
as.numeric(), as.character(), as.Date(), etc..

CC BY SA Erik Petrovski • www.petrovski.dk • Aprenda mais com a homepage ou vinheta do data.table • Versão do data.table 1.11.8 • Atualizado: 2019-01 • Traduzido por Samuel Carleial
LINHAS ÚNICAS LIGAR Aplique funções a
a
1
b
2
a b
1 2
unique(dt, by = c("a", "b")) – extrai linhas
únicas baseado em colunas especificadas por
a b
+
a b
=
a b rbind(dt_a, dt_b) – combinar linhas de dois
data.tabbles
colunas
2 2 2 2 “by”. Omita “by” para usar todas as colunas. APLICAR UMA FUNÇÃO A MÚLTIPLAS COLUNAS
1 2
a b ab dt[, lapply(.SD, mean), .SDcols = c("a", "b")] –
uniqueN(dt, by = c("a", "b")) – conta o número de linhas únicas
1 4 2 5 aplicar uma função – e.g. mean(), as.character(),
baseado em colunas especificadas por “by”. a b x y a b x y cbind(dt_a, dt_b) – combinar colunas
2 5 which.max() – a colunas especificadas em
de dois data.tables
3 6 .SDcols com lapply() e o símbolo .SD. Também
+ = funciona com grupos.
RENOMEAR COLUNAS
a a a_m cols <- c("a")
a b x y setnames(dt, c("a", "b"), c("x", "y")) 1 1 2 dt[, paste0(cols, "_m") := lapply(.SD, mean),
renomeia colunas. .SDcols = cols] – aplicar uma função a colunas
Reformate um data.table
2 2 2
3 3 2 especificadas e assignar o resultado com
variáveis sufixadas aos dados originais.
DEFINA PALAVRAS-CHAVE TRANSFORMAR PARA FORMATO AMPLO
setkey(dt, a, b) – define palavras-chave que permitem pesquisa
rápida e repetida em colunas especificadas usando "dt[.(valor), ]" id y a b id a_x a_z b_x b_z dcast(dt, Linhas sequenciais
ou fundir dados sem especificar colunas usando "dt_a[dt_b]". A x 1 3 A 1 2 3 4 id ~ y,
A z 2 4 B 1 2 3 4
B x 1 3
value.var = c("a", "b")) IDs DE LINHAS
B z 2 4
dt[, c := 1:.N, by = b] – dentro de grupos,
Combinar data.tables
a b a b c
Transforme um data.table de um formato longo a amplo. 1 a 1 a 1 compute uma coluna com linhas sequenciais de
2 a 2 a 2 IDs.
dt Um data.table. 3 b 3 b 1
JUNTAR (join) id ~ y Formula com um “LHS”: colunas de IDs contendo IDs de
múltiplas entradas; e um “RHS”: colunas com valores
DEFASAGEM (LAG) & INCREMENTO (LEAD)
a b x y a b x dt_a[dt_b, on = .(b = y)] – junte para distribuir nos cabeçalhos das colunas.
1 c 3 b 3 b 3 data.tables em linhas com valores iguais value.var Colunas contendo valores para preencher células. dt[, c := shift(a, 1), by = b] – dentro de grupos,
2 a + 2 c = 1 c 2
a
1
b
a
a
1
b
a
c
NA duplicar uma coluna com linhas defasadas por
3 b 1 a 2 a 1 2 a 2 a 1 um valor especificado.
TRANSFORMAR PARA FORMATO LONGO 3 b 3 b NA
4 b 4 b 3
a b c x y z a b c x dt_a[dt_b, on = .(b = y, c > z)] – id a_x a_z b_x b_z id y a b melt(dt, 5 b 5 b 4 dt[, c := shift(a, 1, type = "lead"), by = b] –
1 c 7 3 b 4 3 b 4 3 junte data.tables em linhas com dentro de grupos, duplicar uma coluna com
+ = id.vars = c("id"),
A 1 2 3 4 A 1 1 3
2 a 5 2 c 5 1 c 5 2 valores iguais e desiguais B 1 2 3 4 B 1 1 3 linhas sendo incrementadas por um valor
3 b 6 1 a 8 NA a 8 1 A 2 2 4 measure.vars = patterns("^a", "^b"), especificado.
B 2 2 4 variable.name = "y",
value.name = c("a", "b"))
JUNÇÃO POR “ROLAMENTO” (Rolling join) carregar & salvar arquivos
a id date b id date a id date b
Transforme um data.table de um formato amplo a longo.
1 A 01-01-2010 + 1 A 01-01-2013 = 2 A 01-01-2013 1 dt Um data.table. IMPORTAR
2 A 01-01-2012 1 B 01-01-2013 2 B 01-01-2013 1 id.vars Colunas de IDs com IDs para múltiplas entradas.
3 A 01-01-2014 measure.vars Colunas contendo valores para preencher em células fread("file.csv")
1 B 01-01-2010
(geralmente em forma de padrões). carregar dados desde um arquivo plano, como *.csv ou *.tsv em R.
2 B 01-01-2012
variable.name, Nomes das novas colunas para variáveis e valores fread("file.csv", select = c("a", "b"))
value.name derivados das colunas antigas. carregar colunas especificadas de um arquivo plano em R.
dt_a[dt_b, on = .(id = id, date = date), roll = TRUE] – junte
data.tables em linhas correspondentes a colunas de IDs, mas
mantendo apenas as correspondências mais recentes com o
data.table a esquerda de acordo com colunas de datas. EXPORTAR
“roll = -Inf” reverte a direção. fwrite(dt, "file.csv") – salvar dados em um arquivo plano desde R.

CC BY SA Erik Petrovski • www.petrovski.dk • Aprenda mais com a homepage ou vinheta do data.table • Versão do data.table 1.11.8 • Atualizado: 2019-01 • Traduzido por Samuel Carleial

Você também pode gostar