Dúvidas

Dúvidas enviadas por alunas e alunos do curso e não deu tempo de responder durante a aula!


NA em tabelas

“Como substituir NA com “-” em tabelas? Existe uma forma geral de fazer isso ou o jeito é trabalhar cada tabela mesmo?”

Preparando uma tabela de exemplo

tabela_com_NA <- dados_starwars |> 
  select(nome:cor_do_cabelo) |> 
  dplyr::filter(is.na(altura) | is.na(cor_do_cabelo)) 

Usando knitr

# essa opcão do knitr deixa você escolher o que aparece onde tem NA
options(knitr.kable.NA = '-')

tabela_com_NA |> 
  knitr::kable()
nome altura massa cor_do_cabelo
C-3PO 167 75 -
R2-D2 96 32 -
R5-D4 97 32 -
Greedo 173 74 -
Jabba Desilijic Tiure 175 1358 -
Arvel Crynyd - - Castanho
Finn - - Preto
Rey - - Castanho
Poe Dameron - - Castanho
BB8 - - Nenhum
Captain Phasma - - Desconhecido

Usando outras funções para gerar tabelas

  • Pesquisar na documentação se existe algum argumento para isso, ou..

  • substituir nas colunas:

tabela_com_NA_tratado <- tabela_com_NA |>
  mutate(across(.fns = ~ as.character(.x) |> tidyr::replace_na("-")))
tabela_com_NA_tratado |> glimpse()
Rows: 11
Columns: 4
$ nome          <chr> "C-3PO", "R2-D2", "R5-D4", "Greedo", "Jabba Desilijic Ti…
$ altura        <chr> "167", "96", "97", "173", "175", "-", "-", "-", "-", "-"…
$ massa         <chr> "75", "32", "32", "74", "1358", "-", "-", "-", "-", "-",…
$ cor_do_cabelo <chr> "-", "-", "-", "-", "-", "Castanho", "Preto", "Castanho"…
tabela_com_NA_tratado |> 
  DT::datatable()

Formatação numérica brasileira

Como utilizar vírgula decimal e ponto de milhar? Esse não testei depois de aprender lang= pt, sabem me dizer se a alteração é automática colocando lang ou se precisa fazer outra coisa?

  • Não, lang=pt não altera isso :(

Preparando uma tabela de exemplo

pinguins_selecionada <- pinguins |> 
  select(especie:profundidade_bico, massa_corporal) |> 
  head()

Em textos

A função format é útil!

format(
  pinguins_selecionada$massa_corporal,
  decimal.mark = ",",
  big.mark = "."
)
[1] "3.750" "3.800" "3.250" "   NA" "3.450" "3.650"

Em tabelas (knitr)

pinguins_selecionada |> 
  knitr::kable(format.args = list(decimal.mark = ",", big.mark = "."))
especie ilha comprimento_bico profundidade_bico massa_corporal
Pinguim-de-adélia Torgersen 39,1 18,7 3.750
Pinguim-de-adélia Torgersen 39,5 17,4 3.800
Pinguim-de-adélia Torgersen 40,3 18,0 3.250
Pinguim-de-adélia Torgersen - - -
Pinguim-de-adélia Torgersen 36,7 19,3 3.450
Pinguim-de-adélia Torgersen 39,3 20,6 3.650

Em tabelas (outras)

  • Pesquisar na documentação se existe algum argumento para isso, ou..

  • substituir nas colunas:

pinguins_selecionado_formatado <- pinguins_selecionada |> 
  mutate(across(.cols = where(is.numeric),
                .fns = ~format(.x, decimal.mark = ",", big.mark = ".")))
pinguins_selecionado_formatado |> glimpse()
Rows: 6
Columns: 5
$ especie           <fct> Pinguim-de-adélia, Pinguim-de-adélia, Pinguim-de-adé…
$ ilha              <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgerse…
$ comprimento_bico  <chr> "39,1", "39,5", "40,3", "  NA", "36,7", "39,3"
$ profundidade_bico <chr> "18,7", "17,4", "18,0", "  NA", "19,3", "20,6"
$ massa_corporal    <chr> "3.750", "3.800", "3.250", "   NA", "3.450", "3.650"
pinguins_selecionado_formatado |> 
  DT::datatable()

Em gráficos

ggplot(pinguins) +
  geom_point(aes(x = comprimento_bico, y = massa_corporal, color = especie)) +
  theme_light() +
  # AQUI EMBAIXO FORMATAMOS, NO SCALE_Y_CONTINUOUS
  scale_y_continuous(labels = ~format(.x, decimal.mark = ",", big.mark = ".")) +
  labs(
    x = "Comprimento do bico (cm)",
    y = "Massa corporal (g)",
    color = "Espécie"
  ) +
  theme(legend.position = "top") +
  scale_color_viridis_d()