%>%
linelist group_by(hospital) %>% # agrupe as linhas por hospital
slice_max(date, n = 1, with_ties = F) # se houver um empate (de data), pegue a primeira linha
1 Notas editoriais e técnicas
Nesta página descrevemos a abordagem filosófica, o estilo e as decisões editoriais específicas tomadas durante a criação deste manual.
1.1 Abordagem e estilo
O público em potencial para este livro é grande. Ele será certamente utilizado por pessoas muito novas no R, e também por usuários experientes do R que procuram as melhores práticas e dicas. Portanto, deve ser ao mesmo tempo acessível e sucinto. Portanto, a nossa abordagem foi fornecer o suficiente no texto para que alguém muito novo no R possa aplicar o código e seguir o que o código está fazendo.
Alguns outros pontos:
- Este é um livro de referência de códigos, acompanhado de exemplos relativamente breves - não um livro de texto completo sobre R ou sobre ciência de dados
- Este é um manual de R para utilização no âmbito da epidemiologia aplicada - não um manual sobre os métodos ou a ciência da epidemiologia aplicada
- Este destina-se a ser um documento “vivo” - os pacotes R que são ideais para uma determinada tarefa tendem a mudar frequentemente, e estamos abertos a discussão sobre qual pacote deveríamos enfatizar neste manual
Pacotes do R
São tantas escolhas
Um dos aspectos mais desafiadores da aprendizagem de R é saber qual o pacote R utilizar para uma dada tarefa. É uma ocorrência comum esforçar-se demais em uma tarefa e só mais tarde perceber - ei, há um pacote R que faz tudo isso numa única linha de código!
Neste manual, tentamos oferecer-lhe pelo menos duas formas de completar cada tarefa: um método experimentado e validado (provavelmente em R base ou tidyverse) e um pacote especial R que tenha sido construído para esse fim. Queremos que tenham algumas opções caso não consigam fazer o download de um determinado pacote ou que este não funcione.
Ao escolher os pacotes a utilizar, nós demos prioridade aos pacotes R e às abordagens que foram testados e aprovados pela comunidade. Também minimizamos o número de pacotes utilizados numa sessão de trabalho típica, e escolhemos aqueles que são estáveis (não mudam com muita frequência), e que cumprem a tarefa de forma simples e limpa
Este manual dá, de modo geral, prioridade aos pacotes e funções R do tidyverse. Tidyverse é uma colecção de pacotes de R concebidos para a ciência de dados que partilham gramática e estruturas de dados em comum. Todos os pacotes do tidyverse podem ser instalados ou carregados através do pacote tidyverse. Leia mais em tidyverse website.
Quando aplicável, também oferecemos opções de código usando o R base - os pacotes e funções que já vêm com R na sua instalação. Isto porque reconhecemos que parte do público deste livro podem não ter Internet estável para realizar o download de pacotes extra.
Explicitando os pacotes de origem de cada função
Geralmente é frustrante quando, nos tutoriais de R, uma função é mostrada em código, mas não se sabe de que pacote ela é! Tentamos evitar esta situação.
No texto narrativo, os nomes dos pacotes são escritos a negrito (por exemplo dplyr) e as funções são escritas desta forma: mutate()
. Esforçamo-nos por ser explícitos sobre de que pacote vem uma função, seja referenciando o pacote em texto próximo ou especificando o pacote explicitamente no código: dplyr::mutate()
. Pode parecer redundante, mas estamos fazendo isso de propósito.
Veja a página em Introdução ao R para saber mais sobre pacotes e funções.
Estilo do código
No manual, nós utilizamos frequentemente “novas linhas”, fazendo o nosso código parecer “longo”. Fazemos isso por algumas razões:
- Dessa forma podemos escrever comentários explicativos com `#’, colocando-os posicionados de forma adjacente a cada pequena parte do código
- Geralmente, o código mais longo (vertical) é mais fácil de ler
- É mais fácil de ler em uma tela estreita (não é necessária rolagem lateral)
- A partir das indentações, pode ser mais fácil saber que argumentos pertencem a que função
Como resultado, código que poderia ser escrito desta forma:
…é escrito assim:
%>%
linelist group_by(hospital) %>% # agrupe as linhas por hospital
slice_max(
# mantenha a linha que contem o valor máximo de data para cada grupo k
date, n = 1, # mantenha unicamente a linha com o valor mais alto
with_ties = F) # se houver um empate (de data), pegue a primeira linha
O código R não é geralmente afetado por novas linhas ou indentações. Ao escrever o código, se você iniciar uma nova linha após uma vírgula, ele aplicará padrões de recuo automáticamente.
Também utilizamos muitos espaços (por exemplo n = 1
em vez de n=1
) porque é mais fácil de ler. Seja gentil com as pessoas que lêem o seu código!
Nomenclatura
Neste manual, referimos geralmente “colunas” e “linhas” em vez de “variáveis” e “observações”. Como explicado neste manual em “tidy data”, a maioria dos conjuntos de dados estatísticos epidemiológicos consistem estruturalmente em linhas, colunas e valores.
As variáveis contêm os valores que medem o mesmo atributo subjacente (como grupo etário, resultado, ou data de início). Observações contêm todos os valores medidos na mesma unidade (por exemplo, uma pessoa, local, ou amostra de laboratório). Portanto, estes aspectos podem ser mais difíceis de definir de forma tangível.
Em conjuntos de dados “arrumados” (tidy), cada coluna é uma variável, cada linha é uma observação, e cada célula é um valor único. No entanto, alguns conjuntos de dados que encontrarem podem não seguir esse modelo - um conjunto de dados de formato “largo” pode ter uma variável dividida em várias colunas (ver um exemplo na página Pivoteando Dados). Da mesma forma, uma única observação pode estar divididas em várias linhas.
A maior parte deste manual trata da gestão e transformação de dados, e por isso, se referir às estruturas concretas de dados (linhas e colunas) é mais relevante do que se referir às observações e às variáveis de forma mais abstractas. As exceções ocorrem principalmente em páginas sobre análise de dados, onde se verá mais referências a variáveis e observações.
Notas
Aqui estão os tipos de notas que você poderá encontrar neste manual:
NOTA: Isso é uma nota
DICA: Isso é uma dica.
CUIDADO: Esta é uma nota de precaução.
PERIGO: Isso é uma advertência.
1.2 Decisões editoriais
Abaixo, relacionamos decisões editoriais significativas em torno da escolha do pacote e da função. Se discordar ou quiser oferecer uma nova ferramenta para consideração, por favor, junte-se/ inicie uma conversa na nossa página Github.
Tabela de pacote, função, e outras decisões editoriais*
Assunto | POssibilidades | Escolha | Breve justificativa |
---|---|---|---|
Abordagem geral para escrita do código | tidyverse, data.table, base | tidyverse, com uma página sobre data.table, e menções a alternativas em R base para leitores sem internet | A facilidade de leitura proporcionada pelo tidyverse, elém da sua universalidade e maior utilização para ensino. |
Carregamento de pacotes | library() ,install.packages() , require() , pacman |
pacman | Encurta e simplifica o código para a maioria dos casos de instalação/carregamento de vários pacotes |
Importar e Exportar | rio, muitos outros pacotes | rio | Fácil para muitos tipos de arquivo |
Agrupamento para estatísticas resumo | dplyr group_by() , stats aggregate() |
dplyr group_by() |
Compatível com a ênfase em tidyverse |
Pivotamento ( | tidyr (funções de pivotamento), reshape2 (melt/cast), tidyr (spread/gather) | tidyr (funções de pivotamento) | reshape2 está em desuso, tidyr usa funções de pivotamento desde a versão v1.0.0 |
Limpar nome das colunas | linelist, janitor | janitor | Consolidação de pacotes enfatizada |
Epiweeks | lubridate, aweek, tsibble, zoo | lubridate de modo geral, os outros em casos específicos | A flexibilidade, consistência e perspectiva de manutenção do pacote lubridate |
Rótulos/Legendas do ggplot | labs() , ggtitle() /ylab() /xlab() |
labs() |
todos os rótulos em um lugar, simplicidade |
Converter para fator | factor() , forcats |
forcats | suas várias funções tembém convertem para o formato de fator em um memso comando |
Curvas epidêmicas | incidence, ggplot2, EpiCurve | incidence2 para rapidez, ggplot2 para detalhamento | fiabilidade |
Concatenação | paste() , paste0() , str_glue() , glue() |
str_glue() |
Funções com sintaxe mais simples do que as funções paste; está contido stringr |
1.3 Principais revisões
Data | Principais mudanças |
---|---|
10 Maio 2021 | Lançamento da versão 1.0.0 |
1.4 Informação da sessão (R, RStudio, pacotes)
Abaixo estão as informações sobre as versões dos pacotes R, RStudio, e R utilizados durante esta elaboração deste Manual.
::session_info() sessioninfo
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.3.2 (2023-10-31 ucrt)
os Windows 11 x64 (build 22621)
system x86_64, mingw32
ui RTerm
language (EN)
collate English_United States.utf8
ctype English_United States.utf8
tz Europe/Stockholm
date 2024-06-19
pandoc 3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
cli 3.6.2 2023-12-11 [2] CRAN (R 4.3.2)
digest 0.6.35 2024-03-11 [1] CRAN (R 4.3.3)
evaluate 0.23 2023-11-01 [2] CRAN (R 4.3.2)
fastmap 1.1.1 2023-02-24 [2] CRAN (R 4.3.2)
htmltools 0.5.8 2024-03-25 [1] CRAN (R 4.3.3)
htmlwidgets 1.6.4 2023-12-06 [2] CRAN (R 4.3.2)
jsonlite 1.8.8 2023-12-04 [2] CRAN (R 4.3.2)
knitr 1.45 2023-10-30 [2] CRAN (R 4.3.2)
rlang 1.1.3 2024-01-10 [2] CRAN (R 4.3.2)
rmarkdown 2.26 2024-03-05 [1] CRAN (R 4.3.3)
rstudioapi 0.15.0 2023-07-07 [2] CRAN (R 4.3.2)
sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.3.2)
xfun 0.43 2024-03-25 [1] CRAN (R 4.3.3)
[1] C:/Users/ngulu864/AppData/Local/R/win-library/4.3
[2] C:/Program Files/R/R-4.3.2/library
──────────────────────────────────────────────────────────────────────────────