R para análise de dados em Psicologia

Uma Introdução - Encontro 3

Francisco Pablo Huascar Aragão Pinheiro

Quem sou eu

  • Psicólogo
  • Doutor em educação
  • Professor do campus Sobral da UFC
  • Recentemente, um entusiasta do R

R for Data Science

Livro base para o mini curso

Capa do livro R for Data Science. Uma coruja se destaca na ilustração

R for Data Science

  • Neste link você pode acessar a primeira edição do livro:

https://r4ds.had.co.nz/

  • E aqui você pode acessar a segunda edição que ainda está sendo finalizada:

https://r4ds.hadley.nz/

4 Transformação de dados

4.1 Introdução

  • É raro que os dados estejam da forma certa para fazer análises ou gráficos
  • Transformações:
    • Criar novas variáveis
    • Resumir dados
    • Renomear variáveis
    • Reordenar casos
  • dplyr
  • nycflights13

Pacotes

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.2.3
Warning: package 'ggplot2' was built under R version 4.2.3
Warning: package 'tibble' was built under R version 4.2.3
Warning: package 'readr' was built under R version 4.2.3
Warning: package 'dplyr' was built under R version 4.2.3
Warning: package 'forcats' was built under R version 4.2.3
Warning: package 'lubridate' was built under R version 4.2.3
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.1     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.4.2     ✔ tibble    3.2.1
✔ lubridate 1.9.2     ✔ tidyr     1.3.0
✔ purrr     1.0.1     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(nycflights13)
Warning: package 'nycflights13' was built under R version 4.2.3
library(janitor)

Attaching package: 'janitor'

The following objects are masked from 'package:stats':

    chisq.test, fisher.test
library(kableExtra)

nycflights13::flights

nycflights13::flights

flights
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

nycflights13::flights

  • tibble: tipo especial de banco de dados usado pelo tydiverse
  • projetados para grandes conjuntos de dados
    • mostram apenas as primeiras linhas e apenas as colunas que cabem na tela
    • para ver todas as colunas: glimpse

nycflights13::flights

glimpse(flights)
Rows: 336,776
Columns: 19
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

nycflights13::flights

  • Tipo de cada variável
    • <int>: números inteiros
    • <dbl>: números reais
    • <chr>: caracteres
    • <dttm>: data e hora

Banco para exercícios: mpg

  • Incluído no pacote ggplot2
  • Dados sobre economia de combustível
  • Modelos que tiveram novos lançamentos entre 1999 e 2008
  • 234 linhas (carros)
  • 11 variáveis

Banco para exercícios: mpg

glimpse(mpg)
Rows: 234
Columns: 11
$ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "audi", "…
$ model        <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro", "…
$ displ        <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0, 2.…
$ year         <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, 200…
$ cyl          <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 8, …
$ trans        <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "auto…
$ drv          <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4", "4…
$ cty          <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17, 1…
$ hwy          <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25, 2…
$ fl           <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p…
$ class        <chr> "compact", "compact", "compact", "compact", "compact", "c…

Banco para exercícios: mpg

Variável
manufacturer Nome do fabricante
model Nome do modelo
displ Cilindrada do motor, em litros
year Ano de fabricação
cyl Número de cilindros
trans Tipo de câmbio (transmissão)
drv tipo de tração

Banco para exercícios: mpg

Variável
cty Milhas por galão na cidade
hwy Milhas por galão na estrada
fl Tipo de combustível
class Tipo de carro

O Básico do dplyr

  • verbos do dplyr (funções): manipulação de dados
    • primeiro argumento: banco de dados
    • argumentos subsequentes: quais colunas operar: nomes das variáveis sem aspas
    • saída: novo banco de dados

O Básico do dplyr

filter(mpg, manufacturer == "ford")
# A tibble: 25 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 ford         expeditio…   4.6  1999     8 auto… r        11    17 r     suv  
 2 ford         expeditio…   5.4  1999     8 auto… r        11    17 r     suv  
 3 ford         expeditio…   5.4  2008     8 auto… r        12    18 r     suv  
 4 ford         explorer …   4    1999     6 auto… 4        14    17 r     suv  
 5 ford         explorer …   4    1999     6 manu… 4        15    19 r     suv  
 6 ford         explorer …   4    1999     6 auto… 4        14    17 r     suv  
 7 ford         explorer …   4    2008     6 auto… 4        13    19 r     suv  
 8 ford         explorer …   4.6  2008     8 auto… 4        13    19 r     suv  
 9 ford         explorer …   5    1999     8 auto… 4        13    17 r     suv  
10 ford         f150 pick…   4.2  1999     6 auto… 4        14    17 r     pick…
# ℹ 15 more rows

O Básico do dplyr

select(mpg, model)
# A tibble: 234 × 1
   model     
   <chr>     
 1 a4        
 2 a4        
 3 a4        
 4 a4        
 5 a4        
 6 a4        
 7 a4        
 8 a4 quattro
 9 a4 quattro
10 a4 quattro
# ℹ 224 more rows

O Básico do dplyr

  • pipe: |>: “e então”

|>

mpg |> 
  glimpse()
Rows: 234
Columns: 11
$ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "audi", "…
$ model        <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro", "…
$ displ        <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0, 2.…
$ year         <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, 200…
$ cyl          <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 8, …
$ trans        <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "auto…
$ drv          <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4", "4…
$ cty          <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17, 1…
$ hwy          <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25, 2…
$ fl           <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p…
$ class        <chr> "compact", "compact", "compact", "compact", "compact", "c…

|>

mpg |> 
  filter(manufacturer == "audi") |> 
  group_by(trans) |> 
  summarise("média na cidade" = mean(cty),
            "média na rodovia" = mean(hwy))
# A tibble: 5 × 3
  trans      `média na cidade` `média na rodovia`
  <chr>                  <dbl>              <dbl>
1 auto(av)                19.5               28.5
2 auto(l5)                16                 25.8
3 auto(s6)                17.2               25  
4 manual(m5)              18.5               26.5
5 manual(m6)              18.3               28  

|>

  • Atalho de teclado (windows)
    • ctrl + shift + m
  • Atalho de teclado (mac os)
    • cmd + shift + m

4.2 Linhas - rows (casos/sujeitos/observações)

filter()

  • filtra (mantém | deixa passar) linhas baseado em valores das colunas (variáveis)
  • primeiro argumento: banco de dados
  • segundo e subsequentes: condições que devem ser verdade para manter a linha (caso)

filter()

flights |> 
  filter(dep_delay > 120)
# A tibble: 9,723 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      848           1835       853     1001           1950
 2  2013     1     1      957            733       144     1056            853
 3  2013     1     1     1114            900       134     1447           1222
 4  2013     1     1     1540           1338       122     2020           1825
 5  2013     1     1     1815           1325       290     2120           1542
 6  2013     1     1     1842           1422       260     1958           1535
 7  2013     1     1     1856           1645       131     2212           2005
 8  2013     1     1     1934           1725       129     2126           1855
 9  2013     1     1     1938           1703       155     2109           1823
10  2013     1     1     1942           1705       157     2124           1830
# ℹ 9,713 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercício

  • No banco de dados mpg, encontre os carros que tem um rendimento na cidade maior do que 17 galões por milha (cty)

Resposta

mpg |> 
  filter(cty > 17)
# A tibble: 102 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 audi         a4           1.8  1999     4 auto… f        18    29 p     comp…
 2 audi         a4           1.8  1999     4 manu… f        21    29 p     comp…
 3 audi         a4           2    2008     4 manu… f        20    31 p     comp…
 4 audi         a4           2    2008     4 auto… f        21    30 p     comp…
 5 audi         a4           2.8  1999     6 manu… f        18    26 p     comp…
 6 audi         a4           3.1  2008     6 auto… f        18    27 p     comp…
 7 audi         a4 quattro   1.8  1999     4 manu… 4        18    26 p     comp…
 8 audi         a4 quattro   2    2008     4 manu… 4        20    28 p     comp…
 9 audi         a4 quattro   2    2008     4 auto… 4        19    27 p     comp…
10 chevrolet    malibu       2.4  1999     4 auto… f        19    27 r     mids…
# ℹ 92 more rows

Operadores lógicos

  • > maior que
  • >= maior ou igual que
  • < menor que
  • <= menor ou igual que
  • == igual a
  • != não é igual a

Operadores lógicos

  • Combinar codições:
    • & “e” (“verifique ambas as condições”)
    • , “e” (“verifique ambas as condições”)
    • | “ou” (“verifique qualquer uma das condições”)

Operadores lógicos

flights |> 
  filter(day == 1 & month == 1)
# A tibble: 842 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 832 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

No banco de dados mpg, encontre os carros da fabricante (manufacturer) “jeep” que têm 6 cilindros (cyl)

Resposta

mpg |> 
  filter(manufacturer == "jeep" & cyl == 6)
# A tibble: 3 × 11
  manufacturer model       displ  year   cyl trans drv     cty   hwy fl    class
  <chr>        <chr>       <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 jeep         grand cher…   3    2008     6 auto… 4        17    22 d     suv  
2 jeep         grand cher…   3.7  2008     6 auto… 4        15    19 r     suv  
3 jeep         grand cher…   4    1999     6 auto… 4        15    20 r     suv  

Resposta

mpg |> 
  filter(manufacturer == "jeep", cyl == 6)
# A tibble: 3 × 11
  manufacturer model       displ  year   cyl trans drv     cty   hwy fl    class
  <chr>        <chr>       <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 jeep         grand cher…   3    2008     6 auto… 4        17    22 d     suv  
2 jeep         grand cher…   3.7  2008     6 auto… 4        15    19 r     suv  
3 jeep         grand cher…   4    1999     6 auto… 4        15    20 r     suv  

Operadores lógicos

flights |> 
  filter(month == 1 | month == 2)
# A tibble: 51,955 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 51,945 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Operadores lógicos

# jução do `==` e do `|`

flights |> 
  filter(month %in% c(1,2))
# A tibble: 51,955 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 51,945 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Operadores lógicos

# jução do `==` e do `|`

flights |> 
  filter(month %in% c(1,2,6,11))
# A tibble: 107,466 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 107,456 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

No banco de dados mpg, localize os carros que tem 6 ou 8 cilindors (cyl)

Resposta

mpg |> 
  filter(cyl == 6 | cyl == 8)
# A tibble: 149 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 audi         a4           2.8  1999     6 auto… f        16    26 p     comp…
 2 audi         a4           2.8  1999     6 manu… f        18    26 p     comp…
 3 audi         a4           3.1  2008     6 auto… f        18    27 p     comp…
 4 audi         a4 quattro   2.8  1999     6 auto… 4        15    25 p     comp…
 5 audi         a4 quattro   2.8  1999     6 manu… 4        17    25 p     comp…
 6 audi         a4 quattro   3.1  2008     6 auto… 4        17    25 p     comp…
 7 audi         a4 quattro   3.1  2008     6 manu… 4        15    25 p     comp…
 8 audi         a6 quattro   2.8  1999     6 auto… 4        15    24 p     mids…
 9 audi         a6 quattro   3.1  2008     6 auto… 4        17    25 p     mids…
10 audi         a6 quattro   4.2  2008     8 auto… 4        16    23 p     mids…
# ℹ 139 more rows

Resposta

mpg |> 
  filter(cyl %in% c(6,8))
# A tibble: 149 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 audi         a4           2.8  1999     6 auto… f        16    26 p     comp…
 2 audi         a4           2.8  1999     6 manu… f        18    26 p     comp…
 3 audi         a4           3.1  2008     6 auto… f        18    27 p     comp…
 4 audi         a4 quattro   2.8  1999     6 auto… 4        15    25 p     comp…
 5 audi         a4 quattro   2.8  1999     6 manu… 4        17    25 p     comp…
 6 audi         a4 quattro   3.1  2008     6 auto… 4        17    25 p     comp…
 7 audi         a4 quattro   3.1  2008     6 manu… 4        15    25 p     comp…
 8 audi         a6 quattro   2.8  1999     6 auto… 4        15    24 p     mids…
 9 audi         a6 quattro   3.1  2008     6 auto… 4        17    25 p     mids…
10 audi         a6 quattro   4.2  2008     8 auto… 4        16    23 p     mids…
# ℹ 139 more rows

Exercícios

No banco de dados mpg, ache os carros que foram fabricados (manufacturer) pelas marcas honda, nissan ou toyota

Resposta

mpg |> 
  filter(manufacturer %in% c("honda", "nissan", "toyota"))
# A tibble: 56 × 11
   manufacturer model  displ  year   cyl trans     drv     cty   hwy fl    class
   <chr>        <chr>  <dbl> <int> <int> <chr>     <chr> <int> <int> <chr> <chr>
 1 honda        civic    1.6  1999     4 manual(m… f        28    33 r     subc…
 2 honda        civic    1.6  1999     4 auto(l4)  f        24    32 r     subc…
 3 honda        civic    1.6  1999     4 manual(m… f        25    32 r     subc…
 4 honda        civic    1.6  1999     4 manual(m… f        23    29 p     subc…
 5 honda        civic    1.6  1999     4 auto(l4)  f        24    32 r     subc…
 6 honda        civic    1.8  2008     4 manual(m… f        26    34 r     subc…
 7 honda        civic    1.8  2008     4 auto(l5)  f        25    36 r     subc…
 8 honda        civic    1.8  2008     4 auto(l5)  f        24    36 c     subc…
 9 honda        civic    2    2008     4 manual(m… f        21    29 p     subc…
10 nissan       altima   2.4  1999     4 manual(m… f        21    29 r     comp…
# ℹ 46 more rows

Resposta

mpg |> 
  filter(manufacturer == "honda" | manufacturer == "nissan" | manufacturer == "toyota")
# A tibble: 56 × 11
   manufacturer model  displ  year   cyl trans     drv     cty   hwy fl    class
   <chr>        <chr>  <dbl> <int> <int> <chr>     <chr> <int> <int> <chr> <chr>
 1 honda        civic    1.6  1999     4 manual(m… f        28    33 r     subc…
 2 honda        civic    1.6  1999     4 auto(l4)  f        24    32 r     subc…
 3 honda        civic    1.6  1999     4 manual(m… f        25    32 r     subc…
 4 honda        civic    1.6  1999     4 manual(m… f        23    29 p     subc…
 5 honda        civic    1.6  1999     4 auto(l4)  f        24    32 r     subc…
 6 honda        civic    1.8  2008     4 manual(m… f        26    34 r     subc…
 7 honda        civic    1.8  2008     4 auto(l5)  f        25    36 r     subc…
 8 honda        civic    1.8  2008     4 auto(l5)  f        24    36 c     subc…
 9 honda        civic    2    2008     4 manual(m… f        21    29 p     subc…
10 nissan       altima   2.4  1999     4 manual(m… f        21    29 r     comp…
# ℹ 46 more rows

filter()

  • Nunca altera o banco de dados original
  • É criado um novo banco de dados
  • Para salvar o novo banco de dados, use o operador <-

filter()

jan1 <- flights |> 
  filter(month == 1 & day == 1)

jan1
# A tibble: 842 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 832 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercício

A partir do banco de dados mpg, salve um novo banco de dados chamado ford com todos os carros fabricados por esta marca.

Resposta

ford <- mpg |> 
  filter(manufacturer == "ford")

ford
# A tibble: 25 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 ford         expeditio…   4.6  1999     8 auto… r        11    17 r     suv  
 2 ford         expeditio…   5.4  1999     8 auto… r        11    17 r     suv  
 3 ford         expeditio…   5.4  2008     8 auto… r        12    18 r     suv  
 4 ford         explorer …   4    1999     6 auto… 4        14    17 r     suv  
 5 ford         explorer …   4    1999     6 manu… 4        15    19 r     suv  
 6 ford         explorer …   4    1999     6 auto… 4        14    17 r     suv  
 7 ford         explorer …   4    2008     6 auto… 4        13    19 r     suv  
 8 ford         explorer …   4.6  2008     8 auto… 4        13    19 r     suv  
 9 ford         explorer …   5    1999     8 auto… 4        13    17 r     suv  
10 ford         f150 pick…   4.2  1999     6 auto… 4        14    17 r     pick…
# ℹ 15 more rows

arrange()

  • Muda a ordem das linhas baseado nos valores das colunas

arrange()

flights  
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
flights |> 
  arrange(dep_delay)
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    12     7     2040           2123       -43       40           2352
 2  2013     2     3     2022           2055       -33     2240           2338
 3  2013    11    10     1408           1440       -32     1549           1559
 4  2013     1    11     1900           1930       -30     2233           2243
 5  2013     1    29     1703           1730       -27     1947           1957
 6  2013     8     9      729            755       -26     1002            955
 7  2013    10    23     1907           1932       -25     2143           2143
 8  2013     3    30     2030           2055       -25     2213           2250
 9  2013     3     2     1431           1455       -24     1601           1631
10  2013     5     5      934            958       -24     1225           1309
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

arrange()

  • Mais de um nome de coluna: cada coluna adicional desempata os valores das colunas anteriores

arrange()

flights |> 
  arrange(dep_delay, arr_time)
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    12     7     2040           2123       -43       40           2352
 2  2013     2     3     2022           2055       -33     2240           2338
 3  2013    11    10     1408           1440       -32     1549           1559
 4  2013     1    11     1900           1930       -30     2233           2243
 5  2013     1    29     1703           1730       -27     1947           1957
 6  2013     8     9      729            755       -26     1002            955
 7  2013    10    23     1907           1932       -25     2143           2143
 8  2013     3    30     2030           2055       -25     2213           2250
 9  2013     5    14      914            938       -24     1143           1204
10  2013     5     5      934            958       -24     1225           1309
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

arrange()

  • Para ver do maior pro menor: desc()

arrange()

flights |> 
  arrange(desc(dep_delay))
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     9      641            900      1301     1242           1530
 2  2013     6    15     1432           1935      1137     1607           2120
 3  2013     1    10     1121           1635      1126     1239           1810
 4  2013     9    20     1139           1845      1014     1457           2210
 5  2013     7    22      845           1600      1005     1044           1815
 6  2013     4    10     1100           1900       960     1342           2211
 7  2013     3    17     2321            810       911      135           1020
 8  2013     6    27      959           1900       899     1236           2226
 9  2013     7    22     2257            759       898      121           1026
10  2013    12     5      756           1700       896     1058           2020
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

No banco mpg, identifique o modelo com pior rendimento na cidade (cty)

Resposta

mpg |> 
  arrange(cty)
# A tibble: 234 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 dodge        dakota pi…   4.7  2008     8 auto… 4         9    12 e     pick…
 2 dodge        durango 4…   4.7  2008     8 auto… 4         9    12 e     suv  
 3 dodge        ram 1500 …   4.7  2008     8 auto… 4         9    12 e     pick…
 4 dodge        ram 1500 …   4.7  2008     8 manu… 4         9    12 e     pick…
 5 jeep         grand che…   4.7  2008     8 auto… 4         9    12 e     suv  
 6 chevrolet    c1500 sub…   5.3  2008     8 auto… r        11    15 e     suv  
 7 chevrolet    k1500 tah…   5.3  2008     8 auto… 4        11    14 e     suv  
 8 chevrolet    k1500 tah…   5.7  1999     8 auto… 4        11    15 r     suv  
 9 dodge        caravan 2…   3.3  2008     6 auto… f        11    17 e     mini…
10 dodge        dakota pi…   5.2  1999     8 manu… 4        11    17 r     pick…
# ℹ 224 more rows

Exercícios

No banco mpg, encontre o modelo com melhor rendimento na estrada (hwy)

Resposta

mpg |> 
  arrange(desc(hwy))
# A tibble: 234 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 volkswagen   jetta        1.9  1999     4 manu… f        33    44 d     comp…
 2 volkswagen   new beetle   1.9  1999     4 manu… f        35    44 d     subc…
 3 volkswagen   new beetle   1.9  1999     4 auto… f        29    41 d     subc…
 4 toyota       corolla      1.8  2008     4 manu… f        28    37 r     comp…
 5 honda        civic        1.8  2008     4 auto… f        25    36 r     subc…
 6 honda        civic        1.8  2008     4 auto… f        24    36 c     subc…
 7 toyota       corolla      1.8  1999     4 manu… f        26    35 r     comp…
 8 toyota       corolla      1.8  2008     4 auto… f        26    35 r     comp…
 9 honda        civic        1.8  2008     4 manu… f        26    34 r     subc…
10 honda        civic        1.6  1999     4 manu… f        28    33 r     subc…
# ℹ 224 more rows

Exercício

No banco mpg, ache o carro da marca ford (manufacturer) com melhor rendimento na cidade (cty)

Resposta

mpg |> 
  filter(manufacturer == "ford") |> 
  arrange(desc(cty))
# A tibble: 25 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 ford         mustang      3.8  1999     6 manu… r        18    26 r     subc…
 2 ford         mustang      3.8  1999     6 auto… r        18    25 r     subc…
 3 ford         mustang      4    2008     6 manu… r        17    26 r     subc…
 4 ford         mustang      4    2008     6 auto… r        16    24 r     subc…
 5 ford         explorer …   4    1999     6 manu… 4        15    19 r     suv  
 6 ford         mustang      4.6  1999     8 auto… r        15    21 r     subc…
 7 ford         mustang      4.6  1999     8 manu… r        15    22 r     subc…
 8 ford         mustang      4.6  2008     8 manu… r        15    23 r     subc…
 9 ford         mustang      4.6  2008     8 auto… r        15    22 r     subc…
10 ford         explorer …   4    1999     6 auto… 4        14    17 r     suv  
# ℹ 15 more rows

distinct()

  • Localiza todas as linhas únicas em um conjunto de dados

distinct()

flights |> 
  distinct(origin)
# A tibble: 3 × 1
  origin
  <chr> 
1 EWR   
2 LGA   
3 JFK   
flights |> 
  distinct(dest)
# A tibble: 105 × 1
   dest 
   <chr>
 1 IAH  
 2 MIA  
 3 BQN  
 4 ATL  
 5 ORD  
 6 FLL  
 7 IAD  
 8 MCO  
 9 PBI  
10 TPA  
# ℹ 95 more rows

distinct()

flights |> 
  distinct(origin,dest)
# A tibble: 224 × 2
   origin dest 
   <chr>  <chr>
 1 EWR    IAH  
 2 LGA    IAH  
 3 JFK    MIA  
 4 JFK    BQN  
 5 LGA    ATL  
 6 EWR    ORD  
 7 EWR    FLL  
 8 LGA    IAD  
 9 JFK    MCO  
10 LGA    ORD  
# ℹ 214 more rows

Exercícios

Quais são os fabricantes (manufacturer) encontrados no banco mpg

Resposta

mpg |> 
  distinct(manufacturer)
# A tibble: 15 × 1
   manufacturer
   <chr>       
 1 audi        
 2 chevrolet   
 3 dodge       
 4 ford        
 5 honda       
 6 hyundai     
 7 jeep        
 8 land rover  
 9 lincoln     
10 mercury     
11 nissan      
12 pontiac     
13 subaru      
14 toyota      
15 volkswagen  

Exercícios

No banco mpg, crie uma tabela com os fabricantes (manufacturer) e seus respectivos modelos

Resposta

mpg |> 
  distinct(manufacturer,model) 
# A tibble: 38 × 2
   manufacturer model             
   <chr>        <chr>             
 1 audi         a4                
 2 audi         a4 quattro        
 3 audi         a6 quattro        
 4 chevrolet    c1500 suburban 2wd
 5 chevrolet    corvette          
 6 chevrolet    k1500 tahoe 4wd   
 7 chevrolet    malibu            
 8 dodge        caravan 2wd       
 9 dodge        dakota pickup 4wd 
10 dodge        durango 4wd       
# ℹ 28 more rows

count()

  • Número de ocorrências em cada categoria

count()

flights |> 
  count(dest)
# A tibble: 105 × 2
   dest      n
   <chr> <int>
 1 ABQ     254
 2 ACK     265
 3 ALB     439
 4 ANC       8
 5 ATL   17215
 6 AUS    2439
 7 AVL     275
 8 BDL     443
 9 BGR     375
10 BHM     297
# ℹ 95 more rows

count()

flights |> 
  count(origin, dest)
# A tibble: 224 × 3
   origin dest      n
   <chr>  <chr> <int>
 1 EWR    ALB     439
 2 EWR    ANC       8
 3 EWR    ATL    5022
 4 EWR    AUS     968
 5 EWR    AVL     265
 6 EWR    BDL     443
 7 EWR    BNA    2336
 8 EWR    BOS    5327
 9 EWR    BQN     297
10 EWR    BTV     931
# ℹ 214 more rows

count()

  • O argumento sort = TRUE mostra o número de ocorrências em ordem descendente

count()

flights |> 
  count(dest,sort = T)
# A tibble: 105 × 2
   dest      n
   <chr> <int>
 1 ORD   17283
 2 ATL   17215
 3 LAX   16174
 4 BOS   15508
 5 MCO   14082
 6 CLT   14064
 7 SFO   13331
 8 FLL   12055
 9 MIA   11728
10 DCA    9705
# ℹ 95 more rows

Exercício

A partir do banco mpg, crie uma tabela de frequência dos fabricandes (manufacturer)

Resposta

mpg |> 
  count(manufacturer)
# A tibble: 15 × 2
   manufacturer     n
   <chr>        <int>
 1 audi            18
 2 chevrolet       19
 3 dodge           37
 4 ford            25
 5 honda            9
 6 hyundai         14
 7 jeep             8
 8 land rover       4
 9 lincoln          3
10 mercury          4
11 nissan          13
12 pontiac          5
13 subaru          14
14 toyota          34
15 volkswagen      27

Exercício

Agora, mostre a quantidade de ocorrências somente do fabricante (manufacturer) jeep

Resposta

mpg |> 
  filter(manufacturer == "jeep") |> 
  count(manufacturer)
# A tibble: 1 × 2
  manufacturer     n
  <chr>        <int>
1 jeep             8

Exercício

A partir do banco mpg, crie uma tabela de frequência dos fabricandes (manufacturer) e seus respectivos modelos (model)

Resposta

mpg |> 
  count(manufacturer, model)
# A tibble: 38 × 3
   manufacturer model                  n
   <chr>        <chr>              <int>
 1 audi         a4                     7
 2 audi         a4 quattro             8
 3 audi         a6 quattro             3
 4 chevrolet    c1500 suburban 2wd     5
 5 chevrolet    corvette               5
 6 chevrolet    k1500 tahoe 4wd        4
 7 chevrolet    malibu                 5
 8 dodge        caravan 2wd           11
 9 dodge        dakota pickup 4wd      9
10 dodge        durango 4wd            7
# ℹ 28 more rows

Exercícios

  • Em um único pipeline, encontre todos os voos que atendem a todas as seguintes condições:
    • Tiveram um atraso de chegada de duas ou mais horas;
    • Voaram para Houston (IAH ou HOU);
    • Foram operados pela United, American ou Delta;
    • Partiram no verão (julho, agosto e setembro);
    • Chegaram com mais de duas horas de atraso, mas não saíram atrasados;
    • Atrasaram-se em pelo menos uma hora, mas compensaram mais de 30 minutos de voo.

Exercícios

Tiveram um atraso de chegada (arr_delay) de duas ou mais horas.

Resposta

flights |> 
  filter(arr_delay >= 120)
# A tibble: 10,200 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      811            630       101     1047            830
 2  2013     1     1      848           1835       853     1001           1950
 3  2013     1     1      957            733       144     1056            853
 4  2013     1     1     1114            900       134     1447           1222
 5  2013     1     1     1505           1310       115     1638           1431
 6  2013     1     1     1525           1340       105     1831           1626
 7  2013     1     1     1549           1445        64     1912           1656
 8  2013     1     1     1558           1359       119     1718           1515
 9  2013     1     1     1732           1630        62     2028           1825
10  2013     1     1     1803           1620       103     2008           1750
# ℹ 10,190 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Voaram para Houston (IAH ou HOU - dest).

Resposta

flights |> 
  filter(dest %in% c("IAH","HOU"))
# A tibble: 9,313 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      623            627        -4      933            932
 4  2013     1     1      728            732        -4     1041           1038
 5  2013     1     1      739            739         0     1104           1038
 6  2013     1     1      908            908         0     1228           1219
 7  2013     1     1     1028           1026         2     1350           1339
 8  2013     1     1     1044           1045        -1     1352           1351
 9  2013     1     1     1114            900       134     1447           1222
10  2013     1     1     1205           1200         5     1503           1505
# ℹ 9,303 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Foram operados (carrier) pela United, American ou Delta. Podemos encontrar os códigos da transportadora para as companhias aéreas no banco de dados airlines

Resposta

flights |> 
  filter(carrier %in% c("UA","AA","DL"))
# A tibble: 139,504 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      554            600        -6      812            837
 5  2013     1     1      554            558        -4      740            728
 6  2013     1     1      558            600        -2      753            745
 7  2013     1     1      558            600        -2      924            917
 8  2013     1     1      558            600        -2      923            937
 9  2013     1     1      559            600        -1      941            910
10  2013     1     1      559            600        -1      854            902
# ℹ 139,494 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Partiram no verão (julho, agosto e setembro - month).

Resposta

flights |> 
  filter(month %in% c(7,8,9))
# A tibble: 86,326 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     7     1        1           2029       212      236           2359
 2  2013     7     1        2           2359         3      344            344
 3  2013     7     1       29           2245       104      151              1
 4  2013     7     1       43           2130       193      322             14
 5  2013     7     1       44           2150       174      300            100
 6  2013     7     1       46           2051       235      304           2358
 7  2013     7     1       48           2001       287      308           2305
 8  2013     7     1       58           2155       183      335             43
 9  2013     7     1      100           2146       194      327             30
10  2013     7     1      100           2245       135      337            135
# ℹ 86,316 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Chegaram com mais de duas horas de atraso (arr_delay), mas não saíram atrasados (dep_delay).

Resposta

flights |> 
   filter(arr_delay > 120 &  dep_delay <= 0)
# A tibble: 29 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1    27     1419           1420        -1     1754           1550
 2  2013    10     7     1350           1350         0     1736           1526
 3  2013    10     7     1357           1359        -2     1858           1654
 4  2013    10    16      657            700        -3     1258           1056
 5  2013    11     1      658            700        -2     1329           1015
 6  2013     3    18     1844           1847        -3       39           2219
 7  2013     4    17     1635           1640        -5     2049           1845
 8  2013     4    18      558            600        -2     1149            850
 9  2013     4    18      655            700        -5     1213            950
10  2013     5    22     1827           1830        -3     2217           2010
# ℹ 19 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Atrasaram-se em pelo menos uma hora, mas compensaram mais de 30 minutos de voo.

Resposta

Se um voo atrasou pelo menos uma hora, então dep_delay >= 60. Se o voo não recuperou tempo no ar, então sua chegada seria atrasada pelo mesmo valor que sua partida, significando dep_delay == arr_delay , ou alternativamente, dep_delay - arr_delay == 0. Se compensou mais de 30 minutos no ar, o atraso de chegada deve ser pelo menos 30 minutos menor que o atraso de partida, que é declarado como dep_delay - arr_delay >= 30.

Resposta

atrasos <- 
  tibble(dep_delay = c(10,15,30,60,120,180)) |> 
  mutate(arr_delay = dep_delay - 30,
         dep_delay_arr_delay = dep_delay - arr_delay)
atrasos
# A tibble: 6 × 3
  dep_delay arr_delay dep_delay_arr_delay
      <dbl>     <dbl>               <dbl>
1        10       -20                  30
2        15       -15                  30
3        30         0                  30
4        60        30                  30
5       120        90                  30
6       180       150                  30

Resposta

flights |> 
  filter(dep_delay >= 60 & dep_delay - arr_delay >= 30)
# A tibble: 2,074 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1     1716           1545        91     2140           2039
 2  2013     1     1     2205           1720       285       46           2040
 3  2013     1     1     2326           2130       116      131             18
 4  2013     1     3     1503           1221       162     1803           1555
 5  2013     1     3     1821           1530       171     2131           1910
 6  2013     1     3     1839           1700        99     2056           1950
 7  2013     1     3     1850           1745        65     2148           2120
 8  2013     1     3     1923           1815        68     2036           1958
 9  2013     1     3     1941           1759       102     2246           2139
10  2013     1     3     1950           1845        65     2228           2227
# ℹ 2,064 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Classifique o banco de dados flights para encontrar os voos com os maiores atrasos de partida (dep_delay) mais longos

Resposta

flights |> 
  arrange(desc(dep_delay))
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     9      641            900      1301     1242           1530
 2  2013     6    15     1432           1935      1137     1607           2120
 3  2013     1    10     1121           1635      1126     1239           1810
 4  2013     9    20     1139           1845      1014     1457           2210
 5  2013     7    22      845           1600      1005     1044           1815
 6  2013     4    10     1100           1900       960     1342           2211
 7  2013     3    17     2321            810       911      135           1020
 8  2013     6    27      959           1900       899     1236           2226
 9  2013     7    22     2257            759       898      121           1026
10  2013    12     5      756           1700       896     1058           2020
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercícios

Houve um voo em todos os dias de 2013?

Resposta 1

flights  |> 
  filter(year == 2013)  |>
  distinct(month, day) |> 
  count(month)
# A tibble: 12 × 2
   month     n
   <int> <int>
 1     1    31
 2     2    28
 3     3    31
 4     4    30
 5     5    31
 6     6    30
 7     7    31
 8     8    31
 9     9    30
10    10    31
11    11    30
12    12    31

Resposta 2

flights |> 
  filter(year == 2013) |> 
  distinct(month,day) |> 
  count(day) |> 
  print(n = Inf)

Resposta 2

# A tibble: 31 × 2
     day     n
   <int> <int>
 1     1    12
 2     2    12
 3     3    12
 4     4    12
 5     5    12
 6     6    12
 7     7    12
 8     8    12
 9     9    12
10    10    12
11    11    12
12    12    12
13    13    12
14    14    12
15    15    12
16    16    12
17    17    12
18    18    12
19    19    12
20    20    12
21    21    12
22    22    12
23    23    12
24    24    12
25    25    12
26    26    12
27    27    12
28    28    12
29    29    11
30    30    11
31    31     7

4.2 Colunas

  • mutate(): cria novas colunas derivadas das colunas existentes
  • select(): altera quais colunas estão presentes
  • rename(): altera os nomes das colunas
  • relocate(): altera as posições das colunas

Banco para exercícios economics

  • Incluído no pacote ggplot2

  • Série temporal sobre a economia dos EUA

  • 574 linhas (casos)

  • 6 colunas (variáveis)

Banco para exercícios economics

glimpse(economics)
Rows: 574
Columns: 6
$ date     <date> 1967-07-01, 1967-08-01, 1967-09-01, 1967-10-01, 1967-11-01, …
$ pce      <dbl> 506.7, 509.8, 515.6, 512.2, 517.4, 525.1, 530.9, 533.6, 544.3…
$ pop      <dbl> 198712, 198911, 199113, 199311, 199498, 199657, 199808, 19992…
$ psavert  <dbl> 12.6, 12.6, 11.9, 12.9, 12.8, 11.8, 11.7, 12.3, 11.7, 12.3, 1…
$ uempmed  <dbl> 4.5, 4.7, 4.6, 4.9, 4.7, 4.8, 5.1, 4.5, 4.1, 4.6, 4.4, 4.4, 4…
$ unemploy <dbl> 2944, 2945, 2958, 3143, 3066, 3018, 2878, 3001, 2877, 2709, 2…

Banco para exercícios economics

Variável
date Mês da coleta de dados (1967- 2015)
pce Gastos de consumo pessoal, em bilhões de dólares
pop População total, em milhares
psavert Taxa de poupança pessoal
uempmed Duração mediana do desemprego, em semanas
unemploy Número de desempregados em milhares

mutate()

air_time: quantidade de tempo gasta no ar, em minutos air_time_horas: air_time/60

flights |> 
  mutate(air_time_horas = air_time/60)
# A tibble: 336,776 × 20
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 336,766 more rows
# ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>, air_time_horas <dbl>

mutate()

  • Novas colunas são adicionadas no lado direito do conjunto de dados
    • difícil de vizualizar
  • .before (“antes”) e .after (“depois”) para indicar onde a variável deve ficar

mutate()

flights |> 
  mutate(air_time_horas = air_time/60,
         .before = 1)
# A tibble: 336,776 × 20
   air_time_horas  year month   day dep_time sched_dep_time dep_delay arr_time
            <dbl> <int> <int> <int>    <int>          <int>     <dbl>    <int>
 1          3.78   2013     1     1      517            515         2      830
 2          3.78   2013     1     1      533            529         4      850
 3          2.67   2013     1     1      542            540         2      923
 4          3.05   2013     1     1      544            545        -1     1004
 5          1.93   2013     1     1      554            600        -6      812
 6          2.5    2013     1     1      554            558        -4      740
 7          2.63   2013     1     1      555            600        -5      913
 8          0.883  2013     1     1      557            600        -3      709
 9          2.33   2013     1     1      557            600        -3      838
10          2.3    2013     1     1      558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

mutate()

flights |> 
  mutate(air_time_horas = air_time/60,
         .before = year)
# A tibble: 336,776 × 20
   air_time_horas  year month   day dep_time sched_dep_time dep_delay arr_time
            <dbl> <int> <int> <int>    <int>          <int>     <dbl>    <int>
 1          3.78   2013     1     1      517            515         2      830
 2          3.78   2013     1     1      533            529         4      850
 3          2.67   2013     1     1      542            540         2      923
 4          3.05   2013     1     1      544            545        -1     1004
 5          1.93   2013     1     1      554            600        -6      812
 6          2.5    2013     1     1      554            558        -4      740
 7          2.63   2013     1     1      555            600        -5      913
 8          0.883  2013     1     1      557            600        -3      709
 9          2.33   2013     1     1      557            600        -3      838
10          2.3    2013     1     1      558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

mutate()

flights |> 
  mutate(air_time_horas = air_time/60,
         .after = 3)
# A tibble: 336,776 × 20
    year month   day air_time_horas dep_time sched_dep_time dep_delay arr_time
   <int> <int> <int>          <dbl>    <int>          <int>     <dbl>    <int>
 1  2013     1     1          3.78       517            515         2      830
 2  2013     1     1          3.78       533            529         4      850
 3  2013     1     1          2.67       542            540         2      923
 4  2013     1     1          3.05       544            545        -1     1004
 5  2013     1     1          1.93       554            600        -6      812
 6  2013     1     1          2.5        554            558        -4      740
 7  2013     1     1          2.63       555            600        -5      913
 8  2013     1     1          0.883      557            600        -3      709
 9  2013     1     1          2.33       557            600        -3      838
10  2013     1     1          2.3        558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

mutate()

flights |> 
  mutate(air_time_horas = air_time/60,
         .after = day)
# A tibble: 336,776 × 20
    year month   day air_time_horas dep_time sched_dep_time dep_delay arr_time
   <int> <int> <int>          <dbl>    <int>          <int>     <dbl>    <int>
 1  2013     1     1          3.78       517            515         2      830
 2  2013     1     1          3.78       533            529         4      850
 3  2013     1     1          2.67       542            540         2      923
 4  2013     1     1          3.05       544            545        -1     1004
 5  2013     1     1          1.93       554            600        -6      812
 6  2013     1     1          2.5        554            558        -4      740
 7  2013     1     1          2.63       555            600        -5      913
 8  2013     1     1          0.883      557            600        -3      709
 9  2013     1     1          2.33       557            600        -3      838
10  2013     1     1          2.3        558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

mutate()

  • .keep = c("all", "used", "unused", "none")
    • "all" retém todas as colunas (padrão)
    • "used" retém apenas as colunas usadas para criar novas colunas
    • "unused" retém apenas as colunas não usadas
    • "none" não retém nenhuma coluna extra de .data. Apenas as variáveis de agrupamento e as colunas criadas são mantidas.

mutate()

flights |> 
  mutate(air_time_horas = air_time/60,
         .keep = "used")
# A tibble: 336,776 × 2
   air_time air_time_horas
      <dbl>          <dbl>
 1      227          3.78 
 2      227          3.78 
 3      160          2.67 
 4      183          3.05 
 5      116          1.93 
 6      150          2.5  
 7      158          2.63 
 8       53          0.883
 9      140          2.33 
10      138          2.3  
# ℹ 336,766 more rows

mutate()

  • Não altera o banco de dados orignial
  • É preciso salvar a coluna nova no próprio banco ou em outro objeto com o operador de atribuição <-

mutate()

flights <- flights |> 
  mutate(air_time_horas = air_time/60,
         .after = day)

glimpse(flights)
Rows: 336,776
Columns: 20
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ air_time_horas <dbl> 3.7833333, 3.7833333, 2.6666667, 3.0500000, 1.9333333, …
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

mutate()

air_time_horas <- flights |> 
  mutate(air_time_horas = air_time/60,
         .keep = "none")

air_time_horas
# A tibble: 336,776 × 1
   air_time_horas
            <dbl>
 1          3.78 
 2          3.78 
 3          2.67 
 4          3.05 
 5          1.93 
 6          2.5  
 7          2.63 
 8          0.883
 9          2.33 
10          2.3  
# ℹ 336,766 more rows

Exercícios

data("economics")

print(economics)
# A tibble: 574 × 6
   date         pce    pop psavert uempmed unemploy
   <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
 1 1967-07-01  507. 198712    12.6     4.5     2944
 2 1967-08-01  510. 198911    12.6     4.7     2945
 3 1967-09-01  516. 199113    11.9     4.6     2958
 4 1967-10-01  512. 199311    12.9     4.9     3143
 5 1967-11-01  517. 199498    12.8     4.7     3066
 6 1967-12-01  525. 199657    11.8     4.8     3018
 7 1968-01-01  531. 199808    11.7     5.1     2878
 8 1968-02-01  534. 199920    12.3     4.5     3001
 9 1968-03-01  544. 200056    11.7     4.1     2877
10 1968-04-01  544  200208    12.3     4.6     2709
# ℹ 564 more rows

Exercícios

Crie uma coluna (variável) chamada consumo_percapita que calcule a relação entre os gastos de consumo pessoal (pce) e a população (pop).

Resposta

economics |> 
  mutate(consumo_percapita = pce/pop)
# A tibble: 574 × 7
   date         pce    pop psavert uempmed unemploy consumo_percapita
   <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>             <dbl>
 1 1967-07-01  507. 198712    12.6     4.5     2944           0.00255
 2 1967-08-01  510. 198911    12.6     4.7     2945           0.00256
 3 1967-09-01  516. 199113    11.9     4.6     2958           0.00259
 4 1967-10-01  512. 199311    12.9     4.9     3143           0.00257
 5 1967-11-01  517. 199498    12.8     4.7     3066           0.00259
 6 1967-12-01  525. 199657    11.8     4.8     3018           0.00263
 7 1968-01-01  531. 199808    11.7     5.1     2878           0.00266
 8 1968-02-01  534. 199920    12.3     4.5     3001           0.00267
 9 1968-03-01  544. 200056    11.7     4.1     2877           0.00272
10 1968-04-01  544  200208    12.3     4.6     2709           0.00272
# ℹ 564 more rows

Exercícios

Crie uma variável chamada des_hab a taxa de desempregados (unemploy) por habitante (pop)

Resposta

economics |> 
  mutate(des_hab = unemploy/pop)
# A tibble: 574 × 7
   date         pce    pop psavert uempmed unemploy des_hab
   <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>   <dbl>
 1 1967-07-01  507. 198712    12.6     4.5     2944  0.0148
 2 1967-08-01  510. 198911    12.6     4.7     2945  0.0148
 3 1967-09-01  516. 199113    11.9     4.6     2958  0.0149
 4 1967-10-01  512. 199311    12.9     4.9     3143  0.0158
 5 1967-11-01  517. 199498    12.8     4.7     3066  0.0154
 6 1967-12-01  525. 199657    11.8     4.8     3018  0.0151
 7 1968-01-01  531. 199808    11.7     5.1     2878  0.0144
 8 1968-02-01  534. 199920    12.3     4.5     3001  0.0150
 9 1968-03-01  544. 200056    11.7     4.1     2877  0.0144
10 1968-04-01  544  200208    12.3     4.6     2709  0.0135
# ℹ 564 more rows

Exercícios

Salve em um objeto chamado des_hab_2008 somente a variável des_hab criada anteriormente, mas queremos apenas os dados referentes ao ano de 2008.

Dica 1: você pude usar a função (year) para transmformar variável date em ano!

Dica 2: lembre que o operador de atribuição (<-) é utilizado para salvar objetos

Dica 3: lembre do que aprendemos com a função filter()

Resposta - parte 1

economics |> 
  mutate(date = year(date))  
# A tibble: 574 × 6
    date   pce    pop psavert uempmed unemploy
   <dbl> <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
 1  1967  507. 198712    12.6     4.5     2944
 2  1967  510. 198911    12.6     4.7     2945
 3  1967  516. 199113    11.9     4.6     2958
 4  1967  512. 199311    12.9     4.9     3143
 5  1967  517. 199498    12.8     4.7     3066
 6  1967  525. 199657    11.8     4.8     3018
 7  1968  531. 199808    11.7     5.1     2878
 8  1968  534. 199920    12.3     4.5     3001
 9  1968  544. 200056    11.7     4.1     2877
10  1968  544  200208    12.3     4.6     2709
# ℹ 564 more rows

Resposta - parte 2

economics |> 
  mutate(date = year(date),
         des_hab = unemploy/pop)
# A tibble: 574 × 7
    date   pce    pop psavert uempmed unemploy des_hab
   <dbl> <dbl>  <dbl>   <dbl>   <dbl>    <dbl>   <dbl>
 1  1967  507. 198712    12.6     4.5     2944  0.0148
 2  1967  510. 198911    12.6     4.7     2945  0.0148
 3  1967  516. 199113    11.9     4.6     2958  0.0149
 4  1967  512. 199311    12.9     4.9     3143  0.0158
 5  1967  517. 199498    12.8     4.7     3066  0.0154
 6  1967  525. 199657    11.8     4.8     3018  0.0151
 7  1968  531. 199808    11.7     5.1     2878  0.0144
 8  1968  534. 199920    12.3     4.5     3001  0.0150
 9  1968  544. 200056    11.7     4.1     2877  0.0144
10  1968  544  200208    12.3     4.6     2709  0.0135
# ℹ 564 more rows

Resposta - parte 3

economics |> 
  mutate(date = year(date),
         des_hab = unemploy/pop,
         .keep = "none")
# A tibble: 574 × 2
    date des_hab
   <dbl>   <dbl>
 1  1967  0.0148
 2  1967  0.0148
 3  1967  0.0149
 4  1967  0.0158
 5  1967  0.0154
 6  1967  0.0151
 7  1968  0.0144
 8  1968  0.0150
 9  1968  0.0144
10  1968  0.0135
# ℹ 564 more rows

Resposta - parte 4

economics |> 
  mutate(date = year(date),
         des_hab = unemploy/pop,
         .keep = "none") |>
  filter(date == 2008)
# A tibble: 12 × 2
    date des_hab
   <dbl>   <dbl>
 1  2008  0.0253
 2  2008  0.0247
 3  2008  0.0257
 4  2008  0.0251
 5  2008  0.0276
 6  2008  0.0282
 7  2008  0.0293
 8  2008  0.0309
 9  2008  0.0311
10  2008  0.0330
11  2008  0.0345
12  2008  0.0369

Resposta - parte 5

des_hab_2008 <- economics |> 
  mutate(date = year(date),
         des_hab = unemploy/pop,
         .keep = "none") |>
  filter(date == 2008)

des_hab_2008
# A tibble: 12 × 2
    date des_hab
   <dbl>   <dbl>
 1  2008  0.0253
 2  2008  0.0247
 3  2008  0.0257
 4  2008  0.0251
 5  2008  0.0276
 6  2008  0.0282
 7  2008  0.0293
 8  2008  0.0309
 9  2008  0.0311
10  2008  0.0330
11  2008  0.0345
12  2008  0.0369

mutate(): Criação de variáveis compostas

  • Criadas a partir da combinação de duas ou mais variáveis originais
  • Objetivo: capturar uma determinada dimensão ou constructo que não pode ser medido diretamente por nenhuma das variáveis isoladamente.
  • Exemplo: fator ou componente de uma escala calculado pela média de um grupo de itens

DASS-21

  • Três dimensões: depressão, ansiedade e estresse
  • 21 itens, sendo 7 para cada dimensão
  • Escalade resposta: 0 a 3
  • Valores mais altos indicam níveis mais elevados de depressão, ansiedade e estresse
  • Cada dimensão é calculada com a soma dos respectivos itens

DASS-21: depressão

Item Assertiva
3 Não consegui vivenciar nenhum sentimento positivo.
5 Achei difícil ter iniciativa para fazer as coisas.
10 Senti que não tinha nada a desejar.
13 Senti-me depressivo(a) e sem ânimo.
16 Não consegui me entusiasmar com nada.
17 Senti que não tinha valor como pessoa.
21 Senti que a vida não tinha sentido.

DASS-21: Ansiedade

Item Assertiva
2 Senti minha boca seca.
4 Tive dificuldade em respirar em alguns momentos (ex.: respiração ofegante, falta de ar sem ter feito nenhum esforço físico).
7 Senti tremores (ex.: nas mãos).
9 Preocupei-me com situações em que eu pudesse entrar em pânico e parecesse ridículo(a).
15 Senti que ia entrar em pânico.
19 Sabia que meu coração estava alterado mesmo não tendo feito nenhum esforço físico (ex.:aumento da frequência cardíaca, disritmia cardíaca).
20 Senti medo sem motivo.

DASS-21: Estresse

Item Assertiva
1 Achei difícil me acalmar.
6 Tive a tendência de reagir de forma exagerada às situações.
8 Senti que estava sempre nervoso.
11 Senti-me agitado.
12 Achei difícil relaxar.
14 Fui intolerante com as coisas que me impediam de continuar o que eu estava fazendo.
18 Senti que estava um pouco emotivo/sensível demais.

dass_simulado: Importação do banco

dass_simulado <- read_csv("https://tinyurl.com/dassdata")
glimpse(dass_simulado)
Rows: 100
Columns: 23
$ dass_1  <dbl> 0, 0, 0, 1, 1, 2, 1, 0, 2, 1, 3, 3, 0, 2, 1, 1, 0, 1, 0, 1, 2,…
$ dass_2  <dbl> 0, 0, 3, 1, 1, 3, 0, 0, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 0, 3, 1,…
$ dass_3  <dbl> 0, 3, 0, 1, 3, 3, 0, 2, 0, 3, 3, 0, 3, 3, 0, 0, 3, 2, 1, 0, 0,…
$ dass_4  <dbl> 1, 3, 3, 3, 0, 3, 0, 2, 2, 3, 1, 2, 0, 0, 2, 2, 3, 0, 1, 3, 2,…
$ dass_5  <dbl> 2, 1, 2, 2, 1, 2, 3, 0, 3, 2, 0, 3, 3, 1, 3, 2, 2, 3, 1, 1, 3,…
$ dass_6  <dbl> 2, 3, 2, 1, 0, 2, 1, 3, 0, 1, 3, 1, 2, 0, 1, 2, 0, 2, 2, 3, 0,…
$ dass_7  <dbl> 0, 0, 3, 2, 0, 2, 2, 2, 2, 0, 2, 3, 1, 1, 3, 0, 3, 3, 2, 2, 2,…
$ dass_8  <dbl> 1, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 2, 1, 2, 2, 2, 2, 2, 0, 0, 1,…
$ dass_9  <dbl> 2, 3, 2, 0, 1, 0, 2, 3, 0, 1, 3, 0, 1, 0, 3, 3, 1, 0, 3, 2, 3,…
$ dass_10 <dbl> 0, 1, 1, 2, 3, 3, 1, 1, 2, 1, 2, 2, 3, 3, 1, 3, 2, 3, 3, 2, 3,…
$ dass_11 <dbl> 3, 0, 3, 3, 3, 0, 1, 1, 1, 2, 1, 2, 2, 3, 3, 0, 1, 3, 1, 3, 3,…
$ dass_12 <dbl> 1, 3, 3, 2, 2, 0, 0, 3, 3, 0, 3, 1, 1, 3, 1, 2, 0, 2, 3, 2, 3,…
$ dass_13 <dbl> 1, 3, 2, 0, 2, 2, 2, 0, 2, 3, 3, 1, 1, 1, 0, 1, 1, 2, 3, 1, 2,…
$ dass_14 <dbl> 3, 1, 2, 1, 2, 2, 1, 0, 2, 0, 3, 0, 3, 3, 2, 1, 1, 0, 3, 0, 3,…
$ dass_15 <dbl> 0, 1, 0, 2, 0, 1, 3, 3, 0, 3, 1, 1, 3, 0, 3, 2, 1, 2, 0, 2, 3,…
$ dass_16 <dbl> 3, 1, 2, 1, 3, 1, 2, 1, 2, 0, 3, 2, 1, 0, 3, 1, 2, 3, 1, 3, 0,…
$ dass_17 <dbl> 1, 3, 0, 2, 1, 2, 1, 0, 3, 0, 0, 1, 0, 2, 3, 3, 2, 2, 2, 2, 0,…
$ dass_18 <dbl> 2, 1, 0, 2, 3, 0, 1, 2, 0, 1, 1, 1, 1, 1, 0, 2, 0, 3, 3, 2, 1,…
$ dass_19 <dbl> 1, 2, 3, 3, 1, 0, 3, 1, 2, 2, 1, 1, 3, 3, 1, 0, 2, 2, 3, 3, 0,…
$ dass_20 <dbl> 2, 2, 3, 2, 2, 1, 0, 2, 3, 1, 1, 1, 0, 1, 3, 2, 3, 3, 0, 2, 3,…
$ dass_21 <dbl> 1, 3, 1, 2, 3, 0, 2, 0, 1, 2, 3, 2, 3, 3, 2, 3, 0, 1, 2, 1, 3,…
$ sex     <chr> "F", "M", "F", "M", "M", "F", "F", "M", "M", "F", "F", "F", "F…
$ age     <dbl> 42, 40, 42, 33, 55, 29, 53, 35, 31, 37, 25, 50, 24, 53, 28, 24…

dass_simulado

Variável
dass_1:dass_21 DASS
sex Sexo
age Idade

Criação da variável depressao

Item Assertiva
3 Não consegui vivenciar nenhum sentimento positivo.
5 Achei difícil ter iniciativa para fazer as coisas.
10 Senti que não tinha nada a desejar.
13 Senti-me depressivo(a) e sem ânimo.
16 Não consegui me entusiasmar com nada.
17 Senti que não tinha valor como pessoa.
21 Senti que a vida não tinha sentido.

Criação da variável depressao

dass_simulado |>
  rowwise() |> 
  mutate(depressao = sum(c(dass_3,
                           dass_5,
                           dass_10,
                           dass_13,
                           dass_16,
                           dass_17,
                           dass_21)),
         .keep = "none") |> 
  ungroup()

Criação da variável depressao

# A tibble: 100 × 1
   depressao
       <dbl>
 1         8
 2        15
 3         8
 4        10
 5        16
 6        13
 7        11
 8         4
 9        13
10        11
# ℹ 90 more rows

rowwise()

  • mutate(): opera nas colunas
  • rowwise(): faz o mutate operar nas linhas
    • tipo especial de agrupamento

rowwise()

df <- tibble(x = 1:2, y = 3:4, z = 5:6)
df
# A tibble: 2 × 3
      x     y     z
  <int> <int> <int>
1     1     3     5
2     2     4     6

rowwise()

Calculou a média de x, y e z através de todas as linhas

df %>% 
  mutate(m = mean(c(x, y, z)))
# A tibble: 2 × 4
      x     y     z     m
  <int> <int> <int> <dbl>
1     1     3     5   3.5
2     2     4     6   3.5
(1+3+5+2+4+6)/6
[1] 3.5

rowwise()

Calculou a média para cada linha

df %>% 
  rowwise() %>% 
  mutate(m = mean(c(x, y, z)))
# A tibble: 2 × 4
# Rowwise: 
      x     y     z     m
  <int> <int> <int> <dbl>
1     1     3     5     3
2     2     4     6     4
(1+3+5)/3
[1] 3
(2+4+6)/3
[1] 4

DASS-21: depressão

Item Assertiva
3 Não consegui vivenciar nenhum sentimento positivo.
5 Achei difícil ter iniciativa para fazer as coisas.
10 Senti que não tinha nada a desejar.
13 Senti-me depressivo(a) e sem ânimo.
16 Não consegui me entusiasmar com nada.
17 Senti que não tinha valor como pessoa.
21 Senti que a vida não tinha sentido.

Criação da variável depressao

dass_simulado |>
  #rowwise() |> 
  mutate(depressao = sum(c(dass_3,
                            dass_5,
                            dass_10,
                            dass_13,
                            dass_16,dass_17,
                            dass_21)),
         .keep = "none") |> 
  ungroup()

Criação da variável depressao

# A tibble: 100 × 1
   depressao
       <dbl>
 1      1072
 2      1072
 3      1072
 4      1072
 5      1072
 6      1072
 7      1072
 8      1072
 9      1072
10      1072
# ℹ 90 more rows

Criação da variável depressao

dass_simulado |>
  rowwise() |> 
  mutate(depressao = sum(c(dass_3,
                            dass_5,
                            dass_10,
                            dass_13,
                            dass_16,dass_17,
                            dass_21)),
         .keep = "none") |> 
  ungroup()

Criação da variável depressao

# A tibble: 100 × 1
   depressao
       <dbl>
 1         8
 2        15
 3         8
 4        10
 5        16
 6        13
 7        11
 8         4
 9        13
10        11
# ℹ 90 more rows

Salvar a variável depressão no banco de dados (<-)

dass_simulado <- dass_simulado |> 
  rowwise() |> 
  mutate(depressao = sum(c(dass_3,
                            dass_5,
                            dass_10,
                            dass_13,
                            dass_16,dass_17,
                            dass_21)),
         .before = 1) |> 
  ungroup()

dass_simulado

Salvar a variável depressão no banco de dados (<-)

# A tibble: 100 × 24
   depressao dass_1 dass_2 dass_3 dass_4 dass_5 dass_6 dass_7 dass_8 dass_9
       <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
 1         8      0      0      0      1      2      2      0      1      2
 2        15      0      0      3      3      1      3      0      0      3
 3         8      0      3      0      3      2      2      3      3      2
 4        10      1      1      1      3      2      1      2      3      0
 5        16      1      1      3      0      1      0      0      1      1
 6        13      2      3      3      3      2      2      2      0      0
 7        11      1      0      0      0      3      1      2      1      2
 8         4      0      0      2      2      0      3      2      0      3
 9        13      2      1      0      2      3      0      2      1      0
10        11      1      2      3      3      2      1      0      0      1
# ℹ 90 more rows
# ℹ 14 more variables: dass_10 <dbl>, dass_11 <dbl>, dass_12 <dbl>,
#   dass_13 <dbl>, dass_14 <dbl>, dass_15 <dbl>, dass_16 <dbl>, dass_17 <dbl>,
#   dass_18 <dbl>, dass_19 <dbl>, dass_20 <dbl>, dass_21 <dbl>, sex <chr>,
#   age <dbl>

Exercícios

Salve a variável ansiedade no banco dass_simulado e faça com que ela seja a segunda coluna de dados, depois de depressao.

Ansiedade

Item Assertiva
2 Senti minha boca seca.
4 Tive dificuldade em respirar em alguns momentos (ex.: respiração ofegante, falta de ar sem ter feito nenhum esforço físico).
7 Senti tremores (ex.: nas mãos).
9 Preocupei-me com situações em que eu pudesse entrar em pânico e parecesse ridículo(a).
15 Senti que ia entrar em pânico.
19 Sabia que meu coração estava alterado mesmo não tendo feito nenhum esforço físico (ex.:aumento da frequência cardíaca, disritmia cardíaca).
20 Senti medo sem motivo.

Resposta parte 1

dass_simulado |> 
  rowwise() |> 
  mutate(ansiedade = sum(c(dass_2,
                           dass_4,
                           dass_7,
                           dass_9,
                           dass_15,
                           dass_19,
                           dass_20)),
         .after = depressao) |> 
  ungroup()

Resposta parte 1

# A tibble: 100 × 25
   depressao ansiedade dass_1 dass_2 dass_3 dass_4 dass_5 dass_6 dass_7 dass_8
       <dbl>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
 1         8         6      0      0      0      1      2      2      0      1
 2        15        11      0      0      3      3      1      3      0      0
 3         8        17      0      3      0      3      2      2      3      3
 4        10        13      1      1      1      3      2      1      2      3
 5        16         5      1      1      3      0      1      0      0      1
 6        13        10      2      3      3      3      2      2      2      0
 7        11        10      1      0      0      0      3      1      2      1
 8         4        13      0      0      2      2      0      3      2      0
 9        13        10      2      1      0      2      3      0      2      1
10        11        12      1      2      3      3      2      1      0      0
# ℹ 90 more rows
# ℹ 15 more variables: dass_9 <dbl>, dass_10 <dbl>, dass_11 <dbl>,
#   dass_12 <dbl>, dass_13 <dbl>, dass_14 <dbl>, dass_15 <dbl>, dass_16 <dbl>,
#   dass_17 <dbl>, dass_18 <dbl>, dass_19 <dbl>, dass_20 <dbl>, dass_21 <dbl>,
#   sex <chr>, age <dbl>

Resposta parte 2

dass_simulado <- dass_simulado |> 
  rowwise() |> 
  mutate(ansiedade = sum(c(dass_2,
                           dass_4,
                           dass_7,
                           dass_9,
                           dass_15,
                           dass_19,
                           dass_20)),
         .after = depressao) |> 
  ungroup()

dass_simulado

Resposta parte 2

# A tibble: 100 × 25
   depressao ansiedade dass_1 dass_2 dass_3 dass_4 dass_5 dass_6 dass_7 dass_8
       <dbl>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
 1         8         6      0      0      0      1      2      2      0      1
 2        15        11      0      0      3      3      1      3      0      0
 3         8        17      0      3      0      3      2      2      3      3
 4        10        13      1      1      1      3      2      1      2      3
 5        16         5      1      1      3      0      1      0      0      1
 6        13        10      2      3      3      3      2      2      2      0
 7        11        10      1      0      0      0      3      1      2      1
 8         4        13      0      0      2      2      0      3      2      0
 9        13        10      2      1      0      2      3      0      2      1
10        11        12      1      2      3      3      2      1      0      0
# ℹ 90 more rows
# ℹ 15 more variables: dass_9 <dbl>, dass_10 <dbl>, dass_11 <dbl>,
#   dass_12 <dbl>, dass_13 <dbl>, dass_14 <dbl>, dass_15 <dbl>, dass_16 <dbl>,
#   dass_17 <dbl>, dass_18 <dbl>, dass_19 <dbl>, dass_20 <dbl>, dass_21 <dbl>,
#   sex <chr>, age <dbl>

Exercícios

Salve a variável estresse no banco dass_simulado e faça com que ela seja a terceira coluna de dados, depois de ansiedade.

DASS-21: Estresse

Item Assertiva
1 Achei difícil me acalmar.
6 Tive a tendência de reagir de forma exagerada às situações.
8 Senti que estava sempre nervoso.
11 Senti-me agitado.
12 Achei difícil relaxar.
14 Fui intolerante com as coisas que me impediam de continuar o que eu estava fazendo.
18 Senti que estava um pouco emotivo/sensível demais.

Resposta

dass_simulado <- dass_simulado |> 
  rowwise() |> 
  mutate(estresse = sum(dass_1,
                        dass_6,
                        dass_8,
                        dass_11,
                        dass_12,
                        dass_14,
                        dass_18),
         .after = ansiedade) |> 
  ungroup()

dass_simulado

Resposta

# A tibble: 100 × 26
   depressao ansiedade estresse dass_1 dass_2 dass_3 dass_4 dass_5 dass_6 dass_7
       <dbl>     <dbl>    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
 1         8         6       12      0      0      0      1      2      2      0
 2        15        11        8      0      0      3      3      1      3      0
 3         8        17       13      0      3      0      3      2      2      3
 4        10        13       13      1      1      1      3      2      1      2
 5        16         5       12      1      1      3      0      1      0      0
 6        13        10        6      2      3      3      3      2      2      2
 7        11        10        6      1      0      0      0      3      1      2
 8         4        13        9      0      0      2      2      0      3      2
 9        13        10        9      2      1      0      2      3      0      2
10        11        12        5      1      2      3      3      2      1      0
# ℹ 90 more rows
# ℹ 16 more variables: dass_8 <dbl>, dass_9 <dbl>, dass_10 <dbl>,
#   dass_11 <dbl>, dass_12 <dbl>, dass_13 <dbl>, dass_14 <dbl>, dass_15 <dbl>,
#   dass_16 <dbl>, dass_17 <dbl>, dass_18 <dbl>, dass_19 <dbl>, dass_20 <dbl>,
#   dass_21 <dbl>, sex <chr>, age <dbl>

select()

permite que você selecione rapidamente um subconjunto de variáveis a partir de operações usando os seus nomes

flights |> 
  glimpse()
Rows: 336,776
Columns: 20
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ air_time_horas <dbl> 3.7833333, 3.7833333, 2.6666667, 3.0500000, 1.9333333, …
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

select(): Seleciona as colunas pelo nome

flights |> 
  select(year,month,day)
# A tibble: 336,776 × 3
    year month   day
   <int> <int> <int>
 1  2013     1     1
 2  2013     1     1
 3  2013     1     1
 4  2013     1     1
 5  2013     1     1
 6  2013     1     1
 7  2013     1     1
 8  2013     1     1
 9  2013     1     1
10  2013     1     1
# ℹ 336,766 more rows

select(): Seleciona todas as colunas entre ano e dia (inclusive)

flights |> 
  select(year:day)
# A tibble: 336,776 × 3
    year month   day
   <int> <int> <int>
 1  2013     1     1
 2  2013     1     1
 3  2013     1     1
 4  2013     1     1
 5  2013     1     1
 6  2013     1     1
 7  2013     1     1
 8  2013     1     1
 9  2013     1     1
10  2013     1     1
# ℹ 336,766 more rows

select(): Seleciona todas as colunas, exceto as de ano a dia (inclusive)

flights |> 
  select(!year:day)
# A tibble: 336,776 × 17
   air_time_horas dep_time sched_dep_time dep_delay arr_time sched_arr_time
            <dbl>    <int>          <int>     <dbl>    <int>          <int>
 1          3.78       517            515         2      830            819
 2          3.78       533            529         4      850            830
 3          2.67       542            540         2      923            850
 4          3.05       544            545        -1     1004           1022
 5          1.93       554            600        -6      812            837
 6          2.5        554            558        -4      740            728
 7          2.63       555            600        -5      913            854
 8          0.883      557            600        -3      709            723
 9          2.33       557            600        -3      838            846
10          2.3        558            600        -2      753            745
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

select()

flights |> 
  select(where(is.character))
# A tibble: 336,776 × 4
   carrier tailnum origin dest 
   <chr>   <chr>   <chr>  <chr>
 1 UA      N14228  EWR    IAH  
 2 UA      N24211  LGA    IAH  
 3 AA      N619AA  JFK    MIA  
 4 B6      N804JB  JFK    BQN  
 5 DL      N668DN  LGA    ATL  
 6 UA      N39463  EWR    ORD  
 7 B6      N516JB  EWR    FLL  
 8 EV      N829AS  LGA    IAD  
 9 B6      N593JB  JFK    MCO  
10 AA      N3ALAA  LGA    ORD  
# ℹ 336,766 more rows
flights |> 
  select(where(is.double))
# A tibble: 336,776 × 8
   air_time_horas dep_delay arr_delay air_time distance  hour minute
            <dbl>     <dbl>     <dbl>    <dbl>    <dbl> <dbl>  <dbl>
 1          3.78          2        11      227     1400     5     15
 2          3.78          4        20      227     1416     5     29
 3          2.67          2        33      160     1089     5     40
 4          3.05         -1       -18      183     1576     5     45
 5          1.93         -6       -25      116      762     6      0
 6          2.5          -4        12      150      719     5     58
 7          2.63         -5        19      158     1065     6      0
 8          0.883        -3       -14       53      229     6      0
 9          2.33         -3        -8      140      944     6      0
10          2.3          -2         8      138      733     6      0
# ℹ 336,766 more rows
# ℹ 1 more variable: time_hour <dttm>

select()

flights |> 
  select(starts_with("dep"))
# A tibble: 336,776 × 2
   dep_time dep_delay
      <int>     <dbl>
 1      517         2
 2      533         4
 3      542         2
 4      544        -1
 5      554        -6
 6      554        -4
 7      555        -5
 8      557        -3
 9      557        -3
10      558        -2
# ℹ 336,766 more rows
flights |> 
  select(ends_with("time"))
# A tibble: 336,776 × 5
   dep_time sched_dep_time arr_time sched_arr_time air_time
      <int>          <int>    <int>          <int>    <dbl>
 1      517            515      830            819      227
 2      533            529      850            830      227
 3      542            540      923            850      160
 4      544            545     1004           1022      183
 5      554            600      812            837      116
 6      554            558      740            728      150
 7      555            600      913            854      158
 8      557            600      709            723       53
 9      557            600      838            846      140
10      558            600      753            745      138
# ℹ 336,766 more rows

rename(): renomeia as variáveis (colunas)

Altera os nomes de variáveis individuais usando a sintaxe novo_nome = velho_nome

glimpse(flights)
Rows: 336,776
Columns: 20
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ air_time_horas <dbl> 3.7833333, 3.7833333, 2.6666667, 3.0500000, 1.9333333, …
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

rename(): renomeia as variáveis (colunas)

flights |> 
  rename(ano = year,
         mes = month,
         dia = day)
# A tibble: 336,776 × 20
     ano   mes   dia air_time_horas dep_time sched_dep_time dep_delay arr_time
   <int> <int> <int>          <dbl>    <int>          <int>     <dbl>    <int>
 1  2013     1     1          3.78       517            515         2      830
 2  2013     1     1          3.78       533            529         4      850
 3  2013     1     1          2.67       542            540         2      923
 4  2013     1     1          3.05       544            545        -1     1004
 5  2013     1     1          1.93       554            600        -6      812
 6  2013     1     1          2.5        554            558        -4      740
 7  2013     1     1          2.63       555            600        -5      913
 8  2013     1     1          0.883      557            600        -3      709
 9  2013     1     1          2.33       557            600        -3      838
10  2013     1     1          2.3        558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

rename_with(): renomeia as variáveis (colunas)

Renomeia as colunas usando uma função

glimpse(flights)
Rows: 336,776
Columns: 20
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ air_time_horas <dbl> 3.7833333, 3.7833333, 2.6666667, 3.0500000, 1.9333333, …
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

rename_with(): renomeia as variáveis (colunas)

flights |> 
  rename_with(~ toupper(.),.cols = 1:3)
# A tibble: 336,776 × 20
    YEAR MONTH   DAY air_time_horas dep_time sched_dep_time dep_delay arr_time
   <int> <int> <int>          <dbl>    <int>          <int>     <dbl>    <int>
 1  2013     1     1          3.78       517            515         2      830
 2  2013     1     1          3.78       533            529         4      850
 3  2013     1     1          2.67       542            540         2      923
 4  2013     1     1          3.05       544            545        -1     1004
 5  2013     1     1          1.93       554            600        -6      812
 6  2013     1     1          2.5        554            558        -4      740
 7  2013     1     1          2.63       555            600        -5      913
 8  2013     1     1          0.883      557            600        -3      709
 9  2013     1     1          2.33       557            600        -3      838
10  2013     1     1          2.3        558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

rename_with(): renomeia as variáveis (colunas)

flights |> 
  rename_with(~ str_remove_all(., "_"))
# A tibble: 336,776 × 20
    year month   day airtimehoras deptime scheddeptime depdelay arrtime
   <int> <int> <int>        <dbl>   <int>        <int>    <dbl>   <int>
 1  2013     1     1        3.78      517          515        2     830
 2  2013     1     1        3.78      533          529        4     850
 3  2013     1     1        2.67      542          540        2     923
 4  2013     1     1        3.05      544          545       -1    1004
 5  2013     1     1        1.93      554          600       -6     812
 6  2013     1     1        2.5       554          558       -4     740
 7  2013     1     1        2.63      555          600       -5     913
 8  2013     1     1        0.883     557          600       -3     709
 9  2013     1     1        2.33      557          600       -3     838
10  2013     1     1        2.3       558          600       -2     753
# ℹ 336,766 more rows
# ℹ 12 more variables: schedarrtime <int>, arrdelay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, airtime <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, timehour <dttm>

janitor::clean_names()

Para bancos de dados com muitas inconsistências

glimpse(inconsistente)
Rows: 3
Columns: 4
$ Nome.do.Cliente      <chr> "João", "Maria", "Pedro"
$ ID_Cliente           <dbl> 1, 2, 3
$ Endereço_de.Email    <chr> "joao@email.com", "maria@email.com", "pedro@email…
$ `Número de Telefone` <chr> "123456789", "987654321", "555555555"
library(janitor)

janitor::clean_names()

inconsistente |> 
  clean_names()
# A tibble: 3 × 4
  nome_do_cliente id_cliente endereco_de_email numero_de_telefone
  <chr>                <dbl> <chr>             <chr>             
1 João                     1 joao@email.com    123456789         
2 Maria                    2 maria@email.com   987654321         
3 Pedro                    3 pedro@email.com   555555555         

janitor::clean_names()

Não esqueça de salvar as alterações usando operador de atribuição <-

inconsistente <- inconsistente |>
  clean_names()

inconsistente
# A tibble: 3 × 4
  nome_do_cliente id_cliente endereco_de_email numero_de_telefone
  <chr>                <dbl> <chr>             <chr>             
1 João                     1 joao@email.com    123456789         
2 Maria                    2 maria@email.com   987654321         
3 Pedro                    3 pedro@email.com   555555555         

relocate()

Use para mover as variáveis (colunas)

glimpse(flights)
Rows: 336,776
Columns: 20
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ air_time_horas <dbl> 3.7833333, 3.7833333, 2.6666667, 3.0500000, 1.9333333, …
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

relocate()

flights |> 
  relocate(dep_time)
# A tibble: 336,776 × 20
   dep_time  year month   day air_time_horas sched_dep_time dep_delay arr_time
      <int> <int> <int> <int>          <dbl>          <int>     <dbl>    <int>
 1      517  2013     1     1          3.78             515         2      830
 2      533  2013     1     1          3.78             529         4      850
 3      542  2013     1     1          2.67             540         2      923
 4      544  2013     1     1          3.05             545        -1     1004
 5      554  2013     1     1          1.93             600        -6      812
 6      554  2013     1     1          2.5              558        -4      740
 7      555  2013     1     1          2.63             600        -5      913
 8      557  2013     1     1          0.883            600        -3      709
 9      557  2013     1     1          2.33             600        -3      838
10      558  2013     1     1          2.3              600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

relocate()

É possível escolher a posição em que a variável vai ficar usando .after (depois) ou .before (antes)

flights |> 
  relocate(dep_time,
           .after  = month)
# A tibble: 336,776 × 20
    year month dep_time   day air_time_horas sched_dep_time dep_delay arr_time
   <int> <int>    <int> <int>          <dbl>          <int>     <dbl>    <int>
 1  2013     1      517     1          3.78             515         2      830
 2  2013     1      533     1          3.78             529         4      850
 3  2013     1      542     1          2.67             540         2      923
 4  2013     1      544     1          3.05             545        -1     1004
 5  2013     1      554     1          1.93             600        -6      812
 6  2013     1      554     1          2.5              558        -4      740
 7  2013     1      555     1          2.63             600        -5      913
 8  2013     1      557     1          0.883            600        -3      709
 9  2013     1      557     1          2.33             600        -3      838
10  2013     1      558     1          2.3              600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

relocate()

É possível deslocar grupos de variáveis simultaneamente

flights |> 
  relocate(dep_delay:arr_delay,
           .before = day)
# A tibble: 336,776 × 20
    year month dep_delay arr_time sched_arr_time arr_delay   day air_time_horas
   <int> <int>     <dbl>    <int>          <int>     <dbl> <int>          <dbl>
 1  2013     1         2      830            819        11     1          3.78 
 2  2013     1         4      850            830        20     1          3.78 
 3  2013     1         2      923            850        33     1          2.67 
 4  2013     1        -1     1004           1022       -18     1          3.05 
 5  2013     1        -6      812            837       -25     1          1.93 
 6  2013     1        -4      740            728        12     1          2.5  
 7  2013     1        -5      913            854        19     1          2.63 
 8  2013     1        -3      709            723       -14     1          0.883
 9  2013     1        -3      838            846        -8     1          2.33 
10  2013     1        -2      753            745         8     1          2.3  
# ℹ 336,766 more rows
# ℹ 12 more variables: dep_time <int>, sched_dep_time <int>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

Exercicios

A partir do banco de dados flights crie um novo banco chamado atrasos contendo as variáveis year (ano), month (mês), day (dia), dep_delay (atraso na decolagem), arr_delay (atraso no pouso), carrier (companhia). Os nomes das variáveis devem estar em português e a primeira variável deve ser carrier.

Resposta

atrasos <- flights |> 
  select(year:day,
         dep_delay,
         arr_delay,
         carrier) |> 
  rename(ano = year,
         mes = month,
         dia = day,
         atraso_decolagem = dep_delay,
         atraso_pouso = arr_delay,
         companhia = carrier) |> 
  relocate(companhia)
atrasos
# A tibble: 336,776 × 6
   companhia   ano   mes   dia atraso_decolagem atraso_pouso
   <chr>     <int> <int> <int>            <dbl>        <dbl>
 1 UA         2013     1     1                2           11
 2 UA         2013     1     1                4           20
 3 AA         2013     1     1                2           33
 4 B6         2013     1     1               -1          -18
 5 DL         2013     1     1               -6          -25
 6 UA         2013     1     1               -4           12
 7 B6         2013     1     1               -5           19
 8 EV         2013     1     1               -3          -14
 9 B6         2013     1     1               -3           -8
10 AA         2013     1     1               -2            8
# ℹ 336,766 more rows
flights |> 
  select(companhia = carrier,
         ano = year,
         mes = month,
         dia = day,
         atraso_decolagem = dep_delay,
         atraso_pouso = arr_delay)
# A tibble: 336,776 × 6
   companhia   ano   mes   dia atraso_decolagem atraso_pouso
   <chr>     <int> <int> <int>            <dbl>        <dbl>
 1 UA         2013     1     1                2           11
 2 UA         2013     1     1                4           20
 3 AA         2013     1     1                2           33
 4 B6         2013     1     1               -1          -18
 5 DL         2013     1     1               -6          -25
 6 UA         2013     1     1               -4           12
 7 B6         2013     1     1               -5           19
 8 EV         2013     1     1               -3          -14
 9 B6         2013     1     1               -3           -8
10 AA         2013     1     1               -2            8
# ℹ 336,766 more rows

4.5 Grupos

group_by()

Divide o banco de dados em grupos significativos para a análise, mas não altera o banco.

flights |> 
  group_by(month)
# A tibble: 336,776 × 20
# Groups:   month [12]
    year month   day air_time_horas dep_time sched_dep_time dep_delay arr_time
   <int> <int> <int>          <dbl>    <int>          <int>     <dbl>    <int>
 1  2013     1     1          3.78       517            515         2      830
 2  2013     1     1          3.78       533            529         4      850
 3  2013     1     1          2.67       542            540         2      923
 4  2013     1     1          3.05       544            545        -1     1004
 5  2013     1     1          1.93       554            600        -6      812
 6  2013     1     1          2.5        554            558        -4      740
 7  2013     1     1          2.63       555            600        -5      913
 8  2013     1     1          0.883      557            600        -3      709
 9  2013     1     1          2.33       557            600        -3      838
10  2013     1     1          2.3        558            600        -2      753
# ℹ 336,766 more rows
# ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
#   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

summarise()

resume as estatísticas.

flights |> 
  summarise(atraso_medio = mean(dep_delay))
# A tibble: 1 × 1
  atraso_medio
         <dbl>
1           NA
flights |> 
  summarise(atraso_med_partida = mean(dep_delay,
                                na.rm = T))
# A tibble: 1 × 1
  atraso_med_partida
               <dbl>
1               12.6

Sumário de várias estatísticas

Você pode calcular várias estatísticas de uma só vez

flights |> 
  summarise(m_atraso_partida = mean(dep_delay,
                            na.rm = T),
            sd_atraso_partida = sd(dep_delay,
                                  na.rm = T),
            n = n())
# A tibble: 1 × 3
  m_atraso_partida sd_atraso_partida      n
             <dbl>             <dbl>  <int>
1             12.6              40.2 336776

summarise()

Se usado com group_by(), mostra uma linha para cada grupo

flights |> 
  group_by(month) |> 
  summarise(atraso_medio = mean(dep_delay,
                                na.rm = T),
            n = n())
# A tibble: 12 × 3
   month atraso_medio     n
   <int>        <dbl> <int>
 1     1        10.0  27004
 2     2        10.8  24951
 3     3        13.2  28834
 4     4        13.9  28330
 5     5        13.0  28796
 6     6        20.8  28243
 7     7        21.7  29425
 8     8        12.6  29327
 9     9         6.72 27574
10    10         6.24 28889
11    11         5.44 27268
12    12        16.6  28135

Exercícios

Descubra qual companhia (carrier) tem, em média, os menores atrasos na decolagem (dep_delay). Dica: você vai precisar da função arrange()

Resposta

flights |> 
  group_by(carrier) |> 
  summarise(m = mean(dep_delay,
                     na.rm = T)) |> 
  arrange(m)
# A tibble: 16 × 2
   carrier     m
   <chr>   <dbl>
 1 US       3.78
 2 HA       4.90
 3 AS       5.80
 4 AA       8.59
 5 DL       9.26
 6 MQ      10.6 
 7 UA      12.1 
 8 OO      12.6 
 9 VX      12.9 
10 B6      13.0 
11 9E      16.7 
12 WN      17.7 
13 FL      18.7 
14 YV      19.0 
15 EV      20.0 
16 F9      20.2 

Exercícios

Descubra de qual aeroporto partem (origin) os voos com maiores atrasos na decolagem (dep_delay). Dica: use a função arrange() com o argumento desc()

Resposta

flights |> 
  group_by(origin) |> 
  summarise(m = mean(dep_delay,
                 na.rm = T)) |> 
  arrange(desc(m))
# A tibble: 3 × 2
  origin     m
  <chr>  <dbl>
1 EWR     15.1
2 JFK     12.1
3 LGA     10.3

Exercícios

Descubra em qual aeroporto chegam (dest) os voos com maiores atrasos (arr_delay)

Resposta

flights |> 
  group_by(dest) |> 
  summarise(m = mean(arr_delay,
                     na.rm = T)) |> 
  arrange(desc(m))
# A tibble: 105 × 2
   dest      m
   <chr> <dbl>
 1 CAE    41.8
 2 TUL    33.7
 3 OKC    30.6
 4 JAC    28.1
 5 TYS    24.1
 6 MSN    20.2
 7 RIC    20.1
 8 CAK    19.7
 9 DSM    19.0
10 GRR    18.2
# ℹ 95 more rows

Compartilhar conhecimento sempre!

O código e as imagens utilizados para a construção desse slide estão disponíveis no link a seguir:

https://github.com/pablo-huascar/curso_r