Selecionando colunas de um data.table

Manipulação de dados com data.table em R

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

Forma geral da sintaxe de data.table (recapitulação)

O segundo argumento j é usado para selecionar (e calcular em) colunas

# Forma geral da sintaxe de data.table
DT[i, j, by]
   |  |  |
   |  |  --> agrupar por quê?
   |  -----> o que fazer?
   --------> em quais linhas?
Manipulação de dados com data.table em R

Usando nomes de colunas para selecionar

O argumento j aceita um vetor de caracteres com nomes de colunas

ans <- batrips[, c("trip_id", "duration")]
head(ans, 2)
trip_id duration
139545      435
139546      432
Manipulação de dados com data.table em R

Usando nomes de colunas para selecionar

batrips_df <- as.data.frame(batrips)
ans <- batrips_df[, "trip_id"]
head(ans, 2)
# O resultado é um vetor, não um data.frame
139545, 139546
ans <- batrips[, "trip_id"]
# Ainda é um data.table, não um vetor
head(ans, 2) 
trip_id
139545
139546
Manipulação de dados com data.table em R

Números de colunas em vez de nomes também funcionam

ans <- batrips[, c(2, 4)]
head(ans, 2)
duration  start_station
435       San Francisco City Hall
432       San Francisco City Hall

Porém, isso é uma má prática

# Se a ordem das colunas mudar, o resultado sai errado
batrips[, c(2, 4)]

# O resultado é sempre correto, independente da ordem
batrips[, c("duration", "start_station")]
Manipulação de dados com data.table em R

Removendo colunas com vetores de caracteres

  • -c("col1", "col2", ...) remove as colunas indicadas
  • Recurso de conveniência só no data.table
  • Usar ! em vez de - funciona igual
# Seleciona todas as colunas exceto as abaixo
ans <- batrips[, -c("start_date", "end_date", "end_station")]
head(ans, 1)
trip_id  duration  start_station             start_terminal  bike_id  end_terminal
139545   435       San Francisco City Hall   58              65       473 

subscription_type  zip_code
Subscriber         94612
Manipulação de dados com data.table em R

Selecionando colunas ao estilo data.table

Lembra que as colunas podiam ser usadas como variáveis no argumento i no último capítulo?

# Recapitulando o argumento "i"
# Todas as viagens com mais de uma hora
batrips[duration > 3600]

Da mesma forma, você pode usar uma lista de variáveis (nomes de colunas) para selecionar colunas

ans <- batrips[, list(trip_id, dur = duration)]
head(ans, 2)
trip_id     dur
139545      435
139546      432
Manipulação de dados com data.table em R

Ao selecionar uma única coluna, não envolver a variável com list() retorna um vector

# Seleciona uma coluna e retorna um data.table
ans <- batrips[, list(trip_id)]
head(ans ,2)
trip_id
139545
139546
# Seleciona uma coluna e retorna um vetor
ans <- batrips[, trip_id]
head(ans, 2)
139545 139546
Manipulação de dados com data.table em R

Selecionando colunas ao estilo data.table

.() é um atalho de list(), por conveniência

# .() é o mesmo que list()
ans <- batrips[, .(trip_id, duration)]
head(ans, 2)
trip_id duration
139545      435
139546      432
Manipulação de dados com data.table em R

Vamos praticar!

Manipulação de dados com data.table em R

Preparing Video For Download...