10.2 tibble: um data frame aperfeiçoado

Data frames são a unidade fundamental de armazenamento de dados retangulares no R. O pacote tibble estende a classe data frame da base do com aperfeiçoamentos relacionados a impressão de dados (mais amigável e versátil), a seleção de dados e a manipulação de dados do tipo factor. O novo objeto é chamado de tibble e sua classe de tbl_df.

10.2.1 Funcionalidades do tibble

Para ilustrar algumas vantagens do tibble, vamos usar o data frame prec_anual. A criação destes dados como tibble é feita com a função de mesmo nome do pacote: tibble::tibble().

prec_anual_tbl <- tibble(
  site = c(
    "A001", "A001", "A002", "A002", "A002", "A003", "A803", "A803"
  ),
  ano = c(2000:2001, 2000:2002, 2004, 2005, 2006),
  prec = c(1800, 1400, 1750, 1470, 1630, 1300, 1950, 1100)
)

O exemplo acima é ilustrativo, pois um data frame pode ser convertido em um tibble simplesmente com a função tibble::as_tibble():

prec_anual_tbl <- as_tibble(prec_anual)
prec_anual_tbl

Com o tibble acima, as principais diferenças entre um tibble e um data frame podem ser enfatizadas.

  • quando impresso no console do R, o tibble já mostra a classe de cada variável.

  • vetores caracteres não são interpretados como factors em um tibble, em contraste a base::data.frame() que faz a coerção para factor e não conserva o nome das variáveis. Este comportamento padrão pode causar problemas aos usuários desavisados em análises posteriores.

str(data.frame("temp. do ar" = "18"))
  • permite usar seus próprios argumentos prévios para definir variáveis durante a criação do tibble; veja o exemplo abaixo, onde a int prec(intensidade da precipitação) é baseada na razão da precipitação (prec) pelo número de dias no ano.
prec_anual_tbl <- tibble(
  site = c(
    "A001", "A001", "A002", "A002", "A002", "A003", "A803", "A803"
  ),
  ano = c(2000:2001, 2000:2002, 2004, 2005, 2006),
  prec = c(1800, 1400, 1750, 1470, 1630, 1300, 1950, 1100),
  "int prec" = prec / 365.25
)
prec_anual_tbl
  • nunca adiciona nomes às linhas (row.names)
# nomes das linhas de um data frame são carregados adiante
subset(prec_anual, ano == 2001)
# tibble não possui nome de linhas (rownames)
subset(prec_anual_tbl, ano == 2001)
  • a impressão de um tibble mostra as dez primeiras linhas e a quantidade de colunas mostradas é ajustada ao tamanho da janela do console.

As opções de controle default da impressão de tibbles no console pode ser configuradas através da função de opções de configuração global do R:

m <- 15
n <- 3
options(
  tibble.print_max = m,
  tibble.print_min = n
)

Com a configuração acima, será impresso no console do R n = 3 linhas do tibble se ele tiver mais de m = 15 linhas.

nrow(clima_rs) > 15
# coersão do data.frame clima_rs para tibble
clima_rs_tbl <- as_tibble(clima_rs)

Para restaurar as opções default use:

options(
  tibble.print_max = NULL,
  tibble.print_min = NULL
)
clima_rs_tbl

Uma alternativa útil para inspecionar mais detalhadamente os dados é a função tibble::glimpse().

glimpse(clima_rs)

Lembre-se também, da função utils::View() para visualizar os dados no RStudio.

View(clima_rs)

Outros aspectos diferencias do tibble podem consultados na vinheta do referido pacote (vignette("tibble")).