Tidyverse

O tidyverse é um conjunto * opinionated * de pacotes R criados para a ciência de dados. ~ Hadley Wickham O tidyverse é um grupo de pacotes com uma filosofia de desenho comum que usa uma sintaxe concisa para ajudar você a limpar, organizar, analisar e facilmente visualizar grandes conjuntos de dados. A sintaxe foi popularizada por “R for Data Science” por Hadley Wickham e Garrett Grolemund, mas sua raiz está na ideia de que os fluxos de trabalho devem ser legíveis e reproduzíveis. Os pacotes Tidyverse permitem que seu código seja lido da esquerda para a direita, em outras palavras: no código base, você escreveria h (g (f (x))). Com o tidyverse, você escreve x %>% f %>% g %>% h.

O tidyverse é usado não somente porque é lógico, mas também porque possui pacotes para cada etapa da análise de dados, desde a importação até a exportação. Além disso, cada pacote possui uma gramática consistente.

1) Importar:

2) Organizar:

3) Transformar:

4) Visualizar:

5) Modelar:

6) Programar:

Há muitos outros pacotes que estendem ou se inspiram no tidyverse, mas nós vamos usar somente esses no curso. install.packages("tidyverse") library(tidyverse)

Gramática

Antes de começarmos a codar, existem alguns exemplos de jargões que precisamos definir:

%>% também conhecido como pipe - O operador infix é uma função que passa o lado esquerdo do operador para o primeiro argumento no lado direito do operador. Assim, iris%>% head () é equivalente a head (iris). Você pode chamar o pipe várias vezes para “encadear” funções juntas (aninhamento na base R).

Readr

Para ler arquivos em csv para o R, use o pacote readr. readr::read_csv substitui o read.csv do R base, que lê arquivos bem mais rapidamente. read_csv também preserva os nomes das colunas e não converte caractres para fatores (i.e., não mais header = TRUE, stringsAsFactors = FALSE) yay!) Vejamos!

cetacios<-read_csv("https://raw.githubusercontent.com/LGCarlson/tidytuesday/master/data/2018/2018-12-18/allCetaceanData.csv")
cetacios %>% class()
## [1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"

Tibble

Como visto ao chamar “class” acima, as funções do readr leem automaticamente a tabela como tibble. Vejamos como ela se apresenta, chamando a função head() e visualizar as primeiras dez observações.

          `Base R equalivalent: head(cetacios)`
          
          
          ```r
          cetacios %>%
            head(10)
          ```
          
          ```
          ## # A tibble: 10 x 22
          ##       X1 species id    name  sex   accuracy birthYear acquisition
          ##    <dbl> <chr>   <chr> <chr> <chr> <chr>    <chr>     <chr>      
          ##  1     1 Bottle… NOA0… Dazz… F     a        1989      Born       
          ##  2     2 Bottle… NOA0… Tursi F     a        1973      Born       
          ##  3     3 Bottle… NOA0… Star… M     a        1978      Born       
          ##  4     4 Bottle… NOA0… Sandy F     a        1979      Born       
          ##  5     5 Bottle… NOA0… Sandy M     a        1979      Born       
          ##  6     6 Bottle… NOA0… Nacha F     a        1980      Born       
          ##  7     7 Bottle… NOA0… Kama  M     a        1981      Born       
          ##  8     8 Bottle… NOA0… Jene… F     a        1981      Born       
          ##  9     9 Bottle… NOA0… Duffy M     a        1982      Born       
          ## 10    10 Bottle… NOA0… Astra F     a        1983      Born       
          ## # … with 14 more variables: originDate <date>, originLocation <chr>,
          ## #   mother <chr>, father <chr>, transfers <chr>, currently <chr>,
          ## #   region <chr>, status <chr>, statusDate <date>, COD <chr>, notes <chr>,
          ## #   transferDate <date>, transfer <chr>, entryDate <date>
          ```
          
          Quando você pede para visualizar uma tibble, ela sempre imprime a classe de cada objeto, mas você pode obter mais informações acerca da tibble chamando a função `glimpse()`. Esta  é um função muito importante para conhecer. Nunca se esqueça de, antes de começar a transfomar os dados, visualizar a estrutura dos seus dados.
          `Base R equalivalente: str(cetacios)`
          
          ```r
          cetacios %>% 
            glimpse()
          ```
          
          ```
          ## Observations: 2,194
          ## Variables: 22
          ## $ X1             <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15…
          ## $ species        <chr> "Bottlenose", "Bottlenose", "Bottlenose", "Bottle…
          ## $ id             <chr> "NOA0004614, AZA 428, MLF-428", "NOA0004386, AZA …
          ## $ name           <chr> "Dazzle", "Tursi", "Starbuck", "Sandy", "Sandy", …
          ## $ sex            <chr> "F", "F", "M", "F", "M", "F", "M", "F", "M", "F",…
          ## $ accuracy       <chr> "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",…
          ## $ birthYear      <chr> "1989", "1973", "1978", "1979", "1979", "1980", "…
          ## $ acquisition    <chr> "Born", "Born", "Born", "Born", "Born", "Born", "…
          ## $ originDate     <date> 1989-04-07, 1973-11-26, 1978-05-13, 1979-02-03, …
          ## $ originLocation <chr> "Marineland Florida", "Dolphin Research Center", …
          ## $ mother         <chr> "Betty III", "Little Bit", "Cindy (T.t. gilli)", …
          ## $ father         <chr> "Davy II", "Mr. Gipper", "Sambo", NA, NA, "Jethro…
          ## $ transfers      <chr> NA, NA, "SeaWorld San Diego to SeaWorld Aurora (?…
          ## $ currently      <chr> "Marineland Florida", "Dolphin Research Center", …
          ## $ region         <chr> "US", "US", "US", "US", "US", "US", "US", "US", "…
          ## $ status         <chr> "Alive", "Alive", "Alive", "Alive", "Alive", "Ali…
          ## $ statusDate     <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
          ## $ COD            <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
          ## $ notes          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Sunny wa…
          ## $ transferDate   <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
          ## $ transfer       <chr> "US", "US", "US", "US", "US", "US", "US", "US", "…
          ## $ entryDate      <date> 1989-04-07, 1973-11-26, 1978-05-13, 1979-02-03, …
          ```