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:
tibble
tidyr
3) Transformar:
dplyr
forcats
lubridate
stringr
4) Visualizar:
5) Modelar:
broom
modelr
6) Programar:
purrr
magrittr.. ceci n’est pas une pipe!
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)
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).
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"
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, …
```