créditos: @rstatsmemes, no twitter

1 A importância de um preparo de dados e o Tidy Data

1.1 O tidyverse

Existem alguns pacotes muito úteis quando está trabalhando com manutenção, tratamento e manipulação de dados de forma mais avançada. É possível fazer algumas operações básicas, através de pacotes nativos, como o base e o stats. Contudo, nos últimos anos, a ideia do Tidy Data, desenvolvida por Hadley Wickham, se tornou parte essencial na vida de quem trabalha com ciência de dados (Wickham, 2014).

Com esse cenário de cada vez mais e mais dados para serem trabalhados nos datasets (um conjunto de dados), o pacote tidyverse se tornou ferramenta indispensável na vida do programador em R. O tidyverse é um pacote que reúne uma série de subpacotes, voltados ao tratamento e manipulação de dados, em diversos formatos e de diversas formas, facilitando o trabalho de transformar um dataset inicial num resultado final desejado. Ao longo dessa apostila, o tidyverse será o principal pacote utilizado, assim como outros pacotes e funções básicas.

Dentro do conceito do Tidy Data, dentro de um dataset, há uma padronização da organização das colunas e das linhas:

  • As colunas são as variáveis do dataset. Cada coluna é apenas um único tipo de variável;

  • As linhas são as observações do dataset. Cada linha é apenas uma única observação.

Deste forma, cada célula do dataset conterá apenas um único valor, uma única informação. Neste formato, caso tivessemos um dataset com os dados de abundância diferentes espécies de anuros em 3 diferentes localidades, ao invés de ser uma variável para as espécies de anuros e mais 5 para cada localidade contendo os dados de abundância, no Tidy Data seria apenas uma variável para as espécies de anuros, uma variável com os dados de abundância para as espécies e mais uma variável para a localidade de cada observação: de 6 foram apara apenas 3 variáveis, permitindo uma melhor organização dos dados no dataset.

1.2 Elementos importantes nos próximos usos da apostila

1.2.1 %>% ou |> (pipe)

Os pipe’s são sistema de organização de códigos em aninhamento. Ou seja, utilizamos quando queremos fazer operações em seguida. Naturalmente, é possível fazer isso no R aninhando funções dentro de funções, como:

  • função1(função2(função3(função4)))

Tratando da gramática do R, os pipe’s seriam eqquivalentes ao e então... ou e em seguida faça.... Se fóssemos fazer um bolo, utilizando o princípio do pipe, seria algo como:

  • pegue os materiais %>% jogue farinha %>% jogue ovos %>% jogue margarina %>% jogue chocolate em pó %>% misture %>% jogue em uma forma %>% leve ao forno %>% ponha a cobertura

Para ajudar na leitura e compreensão, uma boa prática utilizada pelos programdores no geral é pôr comandos abaixo de comandos, linhas abaixo de linhas, após cada pipe, utilizando a tecla enter. Isso não afeta em nada a execução do código em si, mas permite que fique mais claro e visual como os comandos dos códigos estão aninhados.

Por fim, vale também falar que existem dois pipes no R, atualmente.

  • O primeiro é o mais clássico, o %>%. Este é do pacote magrittr, um subpacote do tidyverse, o que significa que o pacote tidyverse, ou ao menos o magrittr, precisa estar ativado para funcionar. Ele pode ser ativado simplesmente pelo comando Ctrl+Shift+M.

  • O nais novo, o |>. Este é o pipe nativo do R a partir das versões v.4.1, o que significa que não é necessário ter nenhum pacote instalado para utiliza-lo.

1.2.2 $ e [ ](elementos de dentro do dataset)

O $ representa quando queremos selecionar apenas uma única variável do dataset, sendo então dataset$variável. O [ ] é uma forma de dizer que será trabalhado com elementos internos do dataset. Numa analogia, seria como pegar as canetas de um estojo, através de estojo[caneta vermelha].

O [ ] também é uma forma mais avança de seleção. Este seleciona linhas e colunas, mas por numeração da linha e da coluna no dataset, sendo então dataset[nº da linha, nº da coluna]. É possível selecionar apenas linhas, com dataset[nº da linha,], ou apenas colunas, com dataset[,nº da coluna] ou dataset[nº da coluna], sendo no último caso, se a virgula não for utilizada, o R entenderá que é o nº da coluna.

Também é possível selecionar um conjunto de linhas e de colunas específicas, com ou sem intervalo.

  • Sem intervalo: dataset[c(nº da linha 1,nº da linha 2,...),c(nº da coluna 1,nº da coluna 2,...)];

  • Com intervalo: dataset[c(nº da linha inicial:nº da linha final),c(nº da coluna inicial:nº da coluna final)].

2 Selecionando observações (linhas)

2.1 Pacotes exigidos

library(tidyverse)

2.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sépalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
data(mtcars) # Dataset contendo dados sobre design automobilístico da revista Motor Trend US, em 1974

head(mtcars) # Visualizando os dados
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

2.3 Selecionando linhas baseado em variáveis do dataset

A função filter() é uma função do pacote dplyr, que seleciona as linhas de um dataset baseado em algum critério, especialmente em relação à alguma variável.

2.3.1 Fazendo um tipo de seleção

selecionando apenas os linhas onde o valor da massa dos personagens é maior que 70 Kg.

starwars %>% 
  filter(mass>70) 
## # A tibble: 39 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  9 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 10 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## # … with 29 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

2.3.2 Fazendo mais de uma seleção de uma vez para a mesma variável

Usando o comando | dentro da função filter(), é possível fazer duas seleções para a mesma variável.

starwars %>% 
  filter(skin_color=="light" | skin_color=="fair")
## # A tibble: 28 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  3 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  4 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  5 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  6 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  7 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  8 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  9 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## 10 Wedge Anti…    170    77 brown   fair    hazel      21   male  mascu… Corell…
## # … with 18 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

Outra forma de fazer a mesma coisa, é utilizando o comando %in%. Esse comando indica elementos dentro de um vetor ou de um daraset. Assim, é outra forma para fazer mais de uma seleção para uma variável.

starwars %>% 
  filter(skin_color %in% c("light","fair"))
## # A tibble: 28 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  3 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  4 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  5 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  6 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  7 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  8 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  9 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## 10 Wedge Anti…    170    77 brown   fair    hazel      21   male  mascu… Corell…
## # … with 18 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

2.3.3 Fazendo mais de uma seleção de uma vez para variáveis diferentes

Há como fazer seleções para mais de uma variável. Nesse caso, foi selecionado apenas as linhas onde a massa dos personagens é maior que 70 Kg e a cor da pele é verde. Contudo, um cuidado deve ser tomado: o comando & filtra apenas as linhas que satisfaçam a condição, nesse caso, linhas que contenham personagens com mais de 70 Kg e cor de pele verde; já o comando | filtra todas as linhas que satisfaçam a condição, nesse caso, linhas que contenham personagens com mais de 70 Kg e/ou cor de pele verde, nesse caso, podendo ser um, ou outro, ou ambos. Se as linhas das variáveis foram excludentes, nada será selecionado. Nesse exemplo, se nas observações dos personagens da cor da pele verde não houve nenhuma observação da variável massa > 70Kg, nada seria selecionado.

starwars %>% 
  filter(mass>70 & skin_color=="green") 
## # A tibble: 4 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Greedo          173    74 <NA>    green   black        44 male  mascu… Rodia  
## 2 Bossk           190   113 none    green   red          53 male  mascu… Trando…
## 3 Kit Fisto       196    87 none    green   black        NA male  mascu… Glee A…
## 4 Poggle the …    183    80 none    green   yellow       NA male  mascu… Geonos…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
starwars %>% 
  filter(mass>70 | skin_color=="green") 
## # A tibble: 41 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  9 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 10 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## # … with 31 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

2.3.4 Fazendo seleção baseado em exclusão

selecionando todas as linhas em que a cor de cabelo seja qualquer cor que não seja preto, através do ! antecedendo o comando

starwars %>% 
  filter(!hair_color=="black") 
## # A tibble: 69 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  7 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  8 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  9 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 10 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## # … with 59 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

Selecionando todas as linhas em que a cor de cabelo seja qualquer cor que não seja preto, através do comando !=.

starwars %>% 
  filter(hair_color!="black")
## # A tibble: 69 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  7 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  8 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  9 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 10 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## # … with 59 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

2.3.5 Selecionando as linhas que contém dados NA

Se for desejado selecionar todas as linhas de um dataset baseado em uma variável que contém dados NA de uma variável, basta apenas usar a função is.na() para a variável, dentro da função filter().

starwars %>% 
  filter(is.na(hair_color))
## # A tibble: 5 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 C-3PO           167    75 <NA>    gold    yellow      112 none  mascu… Tatooi…
## 2 R2-D2            96    32 <NA>    white,… red          33 none  mascu… Naboo  
## 3 R5-D4            97    32 <NA>    white,… red          NA none  mascu… Tatooi…
## 4 Greedo          173    74 <NA>    green   black        44 male  mascu… Rodia  
## 5 Jabba Desil…    175  1358 <NA>    green-… orange      600 herm… mascu… Nal Hu…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

Naturalmente, também é possível fazer a exclusaão, como mostrado anteriormente.

starwars %>% 
  filter(!is.na(hair_color))
## # A tibble: 82 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  9 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
## 10 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## # … with 72 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

2.4 Selecionando todas as linhas do dataset baseado em regra

Há situações no tratamento de dados que determinados valores estão distribuídos em todas as variáveis, onde selecionar as observações que contém estes valores exige mais que filtrar apenas de uma variável, mais de todas as variáveis de um dataset. Existem uma série de comandos para fazer estas operações, dependendo do interesse.

2.4.1 Retirando os NA’s

É possível excluir todas as linhas com NA do dataset com a função na.omit().

na.omit(starwars)
## # A tibble: 29 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  9 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 10 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## # … with 19 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

Para garantir que as todas as linhas contendo NA’s foram excluidas, será feito um teste se existe NA’s.

na.omit(starwars) %>% 
  is.na() %>% 
  isTRUE() # Verificando a existância de NA's
## [1] FALSE
# Verificando o nº de linhas antes e depois da exclusão das linhas contendo NA's

nrow(starwars) # Nº de linhas originais das
## [1] 87
na.omit(starwars) %>% 
  nrow()
## [1] 29

Como foi possível observar, todas as linhas que continham NA’s foram excluídas. De 87 linhas iniciais, foram para 29. Isso mostra que as linhas contendo NA’s foram excluídas.

2.4.2 Selecionando todas linhas do dataset baseado em algum valor

No caso de ser necessário filtrar todas as variáveis baseado em um valor que ocorrem em todas as variáveis, é necessário usar funções que correspondam a todas as variáveis. Para isso, é útil usar a função filter_all(), em conjunto com a função any_vars(). A função filter_all() é utilizada quando todas as variáveis precisam ser selecionadas, e a função any_vars() indica que será usada alguma condição para qualquer variável que a tenha. O . representa todas as variáveis do dataset. Sendo assim, filter_all(any_vars(.==4)), significa: filtre todas as observações que o valor seja igual a 4, de qualquer variável.

mtcars %>% 
  filter_all(any_vars(.==4)) 
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

Para garantir que o houveram linhas que não foram selecionadas, para garantir que a função funcionou, vamos comparar o nº de linhas do dataset mtcars antes e depois.

nrow(mtcars) # Conferindo o nº de linhas do dataset mtcars antes da seleção
## [1] 32
mtcars %>% 
  filter_all(any_vars(.==4)) %>% 
  nrow() # Transformando a seleção em um objeto para medir seu nº de linhas
## [1] 21

Como é possível observar, de apenas 32, foi para 21 linhas. 11 linhas não foram selecionadas.

2.4.3 Excluindo todas as linhas do datset baseado em algum valor

Para fazer a exclusão, ao invés de usar any_vars(), usa-se all_vars(). Para testar se funcionou, será também calculado o nº de linhas do dataset filtrado.

mtcars %>% 
  filter_all(all_vars(.!=4)) # Excluindo todas as linhas que contém valores 4
##                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL        17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC       15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Dodge Challenger  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin       15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Pontiac Firebird  19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Ferrari Dino      19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora     15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
mtcars %>% 
  filter_all(all_vars(.!=4)) %>% 
  nrow() # Contabilizando o nº de linhas
## [1] 11

Como foi possível observar, foram retiradas as linhas contem valores 4, reduzindo de 32 para 11 linhas. Contudo, é necessário também tomar um certo cuidado: esse comando exclui TODAS as linhas que contenham algum tipo de valor, para TODAS as colunas. Se TODAS linhas possuem determinado valor, para QUALQUER coluna, se for feita a exclusão, todas as linhas serão excluídas. Esse cuidado é necessário para evitar problemas ou surpresa no tratamento e na manipulação de dados. Por isso, se faz importante conhecer bem o dataset que está sendo trabalhado. Em alguns casos, ao lidar com Big Data (datasets muito grandes), pode acontecer que esse tipo de problema ocorra. Para mostrar isso na prática, será feito um exemplo com o dataset iris.

iris %>% 
  filter(!if_any(.cols=everything(),~.<5))
## [1] Sepal.Length Sepal.Width  Petal.Length Petal.Width  Species     
## <0 linhas> (ou row.names de comprimento 0)

Nesse caso, não foram selecionadas nenhuma linha do dataset original, pois todas as linhas possuíam valores menores que 5.

3 Selecionando variáveis (colunas)

Como mencionado anteriormente, usando o comando $, é possível selecionar as variáveis de um dataset. O pacote dplyr possui uma função para fazer isso, que é a função select().

3.1 Pacotes exigidos

library(tidyverse)

3.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

3.3 Selecionando apenas uma coluna

Selecionando apenas a coluna com os dados da cor do cabelo dos personagens.

starwars %>% 
  select(hair_color) 
## # A tibble: 87 × 1
##    hair_color   
##    <chr>        
##  1 blond        
##  2 <NA>         
##  3 <NA>         
##  4 none         
##  5 brown        
##  6 brown, grey  
##  7 brown        
##  8 <NA>         
##  9 black        
## 10 auburn, white
## # … with 77 more rows

3.4 Selecionando mais de uma coluna

Selecionando as colunas com os dados da cor do cabelo e dos olhos dos personagens.

starwars %>% 
  select(c(hair_color,eye_color)) 
## # A tibble: 87 × 2
##    hair_color    eye_color
##    <chr>         <chr>    
##  1 blond         blue     
##  2 <NA>          yellow   
##  3 <NA>          red      
##  4 none          yellow   
##  5 brown         brown    
##  6 brown, grey   blue     
##  7 brown         blue     
##  8 <NA>          red      
##  9 black         brown    
## 10 auburn, white blue-gray
## # … with 77 more rows

3.5 Selecionado colunas baseado por exclusão

Selecionando todas as colunas com dados que não sejam sobre cor do cabelo e dos olhos dos personagens.

starwars %>% 
  select(!c(hair_color,eye_color))  
## # A tibble: 87 × 12
##    name  height  mass skin_…¹ birth…² sex   gender homew…³ species films vehic…⁴
##    <chr>  <int> <dbl> <chr>     <dbl> <chr> <chr>  <chr>   <chr>   <lis> <list> 
##  1 Luke…    172    77 fair       19   male  mascu… Tatooi… Human   <chr> <chr>  
##  2 C-3PO    167    75 gold      112   none  mascu… Tatooi… Droid   <chr> <chr>  
##  3 R2-D2     96    32 white,…    33   none  mascu… Naboo   Droid   <chr> <chr>  
##  4 Dart…    202   136 white      41.9 male  mascu… Tatooi… Human   <chr> <chr>  
##  5 Leia…    150    49 light      19   fema… femin… Aldera… Human   <chr> <chr>  
##  6 Owen…    178   120 light      52   male  mascu… Tatooi… Human   <chr> <chr>  
##  7 Beru…    165    75 light      47   fema… femin… Tatooi… Human   <chr> <chr>  
##  8 R5-D4     97    32 white,…    NA   none  mascu… Tatooi… Droid   <chr> <chr>  
##  9 Bigg…    183    84 light      24   male  mascu… Tatooi… Human   <chr> <chr>  
## 10 Obi-…    182    77 fair       57   male  mascu… Stewjon Human   <chr> <chr>  
## # … with 77 more rows, 1 more variable: starships <list>, and abbreviated
## #   variable names ¹​skin_color, ²​birth_year, ³​homeworld, ⁴​vehicles

3.6 Selecionado colunas baseado pelo começo do nome das colunas

Selecionando todas as colunas em que os nomes começam com “Sepal”.

iris %>% 
  select(starts_with("Sepal")) 
##     Sepal.Length Sepal.Width
## 1            5.1         3.5
## 2            4.9         3.0
## 3            4.7         3.2
## 4            4.6         3.1
## 5            5.0         3.6
## 6            5.4         3.9
## 7            4.6         3.4
## 8            5.0         3.4
## 9            4.4         2.9
## 10           4.9         3.1
## 11           5.4         3.7
## 12           4.8         3.4
## 13           4.8         3.0
## 14           4.3         3.0
## 15           5.8         4.0
## 16           5.7         4.4
## 17           5.4         3.9
## 18           5.1         3.5
## 19           5.7         3.8
## 20           5.1         3.8
## 21           5.4         3.4
## 22           5.1         3.7
## 23           4.6         3.6
## 24           5.1         3.3
## 25           4.8         3.4
## 26           5.0         3.0
## 27           5.0         3.4
## 28           5.2         3.5
## 29           5.2         3.4
## 30           4.7         3.2
## 31           4.8         3.1
## 32           5.4         3.4
## 33           5.2         4.1
## 34           5.5         4.2
## 35           4.9         3.1
## 36           5.0         3.2
## 37           5.5         3.5
## 38           4.9         3.6
## 39           4.4         3.0
## 40           5.1         3.4
## 41           5.0         3.5
## 42           4.5         2.3
## 43           4.4         3.2
## 44           5.0         3.5
## 45           5.1         3.8
## 46           4.8         3.0
## 47           5.1         3.8
## 48           4.6         3.2
## 49           5.3         3.7
## 50           5.0         3.3
## 51           7.0         3.2
## 52           6.4         3.2
## 53           6.9         3.1
## 54           5.5         2.3
## 55           6.5         2.8
## 56           5.7         2.8
## 57           6.3         3.3
## 58           4.9         2.4
## 59           6.6         2.9
## 60           5.2         2.7
## 61           5.0         2.0
## 62           5.9         3.0
## 63           6.0         2.2
## 64           6.1         2.9
## 65           5.6         2.9
## 66           6.7         3.1
## 67           5.6         3.0
## 68           5.8         2.7
## 69           6.2         2.2
## 70           5.6         2.5
## 71           5.9         3.2
## 72           6.1         2.8
## 73           6.3         2.5
## 74           6.1         2.8
## 75           6.4         2.9
## 76           6.6         3.0
## 77           6.8         2.8
## 78           6.7         3.0
## 79           6.0         2.9
## 80           5.7         2.6
## 81           5.5         2.4
## 82           5.5         2.4
## 83           5.8         2.7
## 84           6.0         2.7
## 85           5.4         3.0
## 86           6.0         3.4
## 87           6.7         3.1
## 88           6.3         2.3
## 89           5.6         3.0
## 90           5.5         2.5
## 91           5.5         2.6
## 92           6.1         3.0
## 93           5.8         2.6
## 94           5.0         2.3
## 95           5.6         2.7
## 96           5.7         3.0
## 97           5.7         2.9
## 98           6.2         2.9
## 99           5.1         2.5
## 100          5.7         2.8
## 101          6.3         3.3
## 102          5.8         2.7
## 103          7.1         3.0
## 104          6.3         2.9
## 105          6.5         3.0
## 106          7.6         3.0
## 107          4.9         2.5
## 108          7.3         2.9
## 109          6.7         2.5
## 110          7.2         3.6
## 111          6.5         3.2
## 112          6.4         2.7
## 113          6.8         3.0
## 114          5.7         2.5
## 115          5.8         2.8
## 116          6.4         3.2
## 117          6.5         3.0
## 118          7.7         3.8
## 119          7.7         2.6
## 120          6.0         2.2
## 121          6.9         3.2
## 122          5.6         2.8
## 123          7.7         2.8
## 124          6.3         2.7
## 125          6.7         3.3
## 126          7.2         3.2
## 127          6.2         2.8
## 128          6.1         3.0
## 129          6.4         2.8
## 130          7.2         3.0
## 131          7.4         2.8
## 132          7.9         3.8
## 133          6.4         2.8
## 134          6.3         2.8
## 135          6.1         2.6
## 136          7.7         3.0
## 137          6.3         3.4
## 138          6.4         3.1
## 139          6.0         3.0
## 140          6.9         3.1
## 141          6.7         3.1
## 142          6.9         3.1
## 143          5.8         2.7
## 144          6.8         3.2
## 145          6.7         3.3
## 146          6.7         3.0
## 147          6.3         2.5
## 148          6.5         3.0
## 149          6.2         3.4
## 150          5.9         3.0

3.7 Selecionado colunas baseado pelo fim do nome das colunas

Selecionando todas as colunas em que os nomes terminam com “Width”.

iris %>% 
  select(ends_with("Width")) 
##     Sepal.Width Petal.Width
## 1           3.5         0.2
## 2           3.0         0.2
## 3           3.2         0.2
## 4           3.1         0.2
## 5           3.6         0.2
## 6           3.9         0.4
## 7           3.4         0.3
## 8           3.4         0.2
## 9           2.9         0.2
## 10          3.1         0.1
## 11          3.7         0.2
## 12          3.4         0.2
## 13          3.0         0.1
## 14          3.0         0.1
## 15          4.0         0.2
## 16          4.4         0.4
## 17          3.9         0.4
## 18          3.5         0.3
## 19          3.8         0.3
## 20          3.8         0.3
## 21          3.4         0.2
## 22          3.7         0.4
## 23          3.6         0.2
## 24          3.3         0.5
## 25          3.4         0.2
## 26          3.0         0.2
## 27          3.4         0.4
## 28          3.5         0.2
## 29          3.4         0.2
## 30          3.2         0.2
## 31          3.1         0.2
## 32          3.4         0.4
## 33          4.1         0.1
## 34          4.2         0.2
## 35          3.1         0.2
## 36          3.2         0.2
## 37          3.5         0.2
## 38          3.6         0.1
## 39          3.0         0.2
## 40          3.4         0.2
## 41          3.5         0.3
## 42          2.3         0.3
## 43          3.2         0.2
## 44          3.5         0.6
## 45          3.8         0.4
## 46          3.0         0.3
## 47          3.8         0.2
## 48          3.2         0.2
## 49          3.7         0.2
## 50          3.3         0.2
## 51          3.2         1.4
## 52          3.2         1.5
## 53          3.1         1.5
## 54          2.3         1.3
## 55          2.8         1.5
## 56          2.8         1.3
## 57          3.3         1.6
## 58          2.4         1.0
## 59          2.9         1.3
## 60          2.7         1.4
## 61          2.0         1.0
## 62          3.0         1.5
## 63          2.2         1.0
## 64          2.9         1.4
## 65          2.9         1.3
## 66          3.1         1.4
## 67          3.0         1.5
## 68          2.7         1.0
## 69          2.2         1.5
## 70          2.5         1.1
## 71          3.2         1.8
## 72          2.8         1.3
## 73          2.5         1.5
## 74          2.8         1.2
## 75          2.9         1.3
## 76          3.0         1.4
## 77          2.8         1.4
## 78          3.0         1.7
## 79          2.9         1.5
## 80          2.6         1.0
## 81          2.4         1.1
## 82          2.4         1.0
## 83          2.7         1.2
## 84          2.7         1.6
## 85          3.0         1.5
## 86          3.4         1.6
## 87          3.1         1.5
## 88          2.3         1.3
## 89          3.0         1.3
## 90          2.5         1.3
## 91          2.6         1.2
## 92          3.0         1.4
## 93          2.6         1.2
## 94          2.3         1.0
## 95          2.7         1.3
## 96          3.0         1.2
## 97          2.9         1.3
## 98          2.9         1.3
## 99          2.5         1.1
## 100         2.8         1.3
## 101         3.3         2.5
## 102         2.7         1.9
## 103         3.0         2.1
## 104         2.9         1.8
## 105         3.0         2.2
## 106         3.0         2.1
## 107         2.5         1.7
## 108         2.9         1.8
## 109         2.5         1.8
## 110         3.6         2.5
## 111         3.2         2.0
## 112         2.7         1.9
## 113         3.0         2.1
## 114         2.5         2.0
## 115         2.8         2.4
## 116         3.2         2.3
## 117         3.0         1.8
## 118         3.8         2.2
## 119         2.6         2.3
## 120         2.2         1.5
## 121         3.2         2.3
## 122         2.8         2.0
## 123         2.8         2.0
## 124         2.7         1.8
## 125         3.3         2.1
## 126         3.2         1.8
## 127         2.8         1.8
## 128         3.0         1.8
## 129         2.8         2.1
## 130         3.0         1.6
## 131         2.8         1.9
## 132         3.8         2.0
## 133         2.8         2.2
## 134         2.8         1.5
## 135         2.6         1.4
## 136         3.0         2.3
## 137         3.4         2.4
## 138         3.1         1.8
## 139         3.0         1.8
## 140         3.1         2.1
## 141         3.1         2.4
## 142         3.1         2.3
## 143         2.7         1.9
## 144         3.2         2.3
## 145         3.3         2.5
## 146         3.0         2.3
## 147         2.5         1.9
## 148         3.0         2.0
## 149         3.4         2.3
## 150         3.0         1.8

3.8 Selecionando colunas baseado em condição

Diferentes variáveis em um dataset podem ter diferentes naturezas. Muitas vezes, o que se deseja é selecionar aquelas colunas que atendam a uma determinada condição. Para isso, usa-se a função select_if(). Nesse exemplo, para o dataset iris, serão selecionadas todas as variáveis que possuem valores numéricos.

iris %>% 
  select_if(is.numeric)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1            5.1         3.5          1.4         0.2
## 2            4.9         3.0          1.4         0.2
## 3            4.7         3.2          1.3         0.2
## 4            4.6         3.1          1.5         0.2
## 5            5.0         3.6          1.4         0.2
## 6            5.4         3.9          1.7         0.4
## 7            4.6         3.4          1.4         0.3
## 8            5.0         3.4          1.5         0.2
## 9            4.4         2.9          1.4         0.2
## 10           4.9         3.1          1.5         0.1
## 11           5.4         3.7          1.5         0.2
## 12           4.8         3.4          1.6         0.2
## 13           4.8         3.0          1.4         0.1
## 14           4.3         3.0          1.1         0.1
## 15           5.8         4.0          1.2         0.2
## 16           5.7         4.4          1.5         0.4
## 17           5.4         3.9          1.3         0.4
## 18           5.1         3.5          1.4         0.3
## 19           5.7         3.8          1.7         0.3
## 20           5.1         3.8          1.5         0.3
## 21           5.4         3.4          1.7         0.2
## 22           5.1         3.7          1.5         0.4
## 23           4.6         3.6          1.0         0.2
## 24           5.1         3.3          1.7         0.5
## 25           4.8         3.4          1.9         0.2
## 26           5.0         3.0          1.6         0.2
## 27           5.0         3.4          1.6         0.4
## 28           5.2         3.5          1.5         0.2
## 29           5.2         3.4          1.4         0.2
## 30           4.7         3.2          1.6         0.2
## 31           4.8         3.1          1.6         0.2
## 32           5.4         3.4          1.5         0.4
## 33           5.2         4.1          1.5         0.1
## 34           5.5         4.2          1.4         0.2
## 35           4.9         3.1          1.5         0.2
## 36           5.0         3.2          1.2         0.2
## 37           5.5         3.5          1.3         0.2
## 38           4.9         3.6          1.4         0.1
## 39           4.4         3.0          1.3         0.2
## 40           5.1         3.4          1.5         0.2
## 41           5.0         3.5          1.3         0.3
## 42           4.5         2.3          1.3         0.3
## 43           4.4         3.2          1.3         0.2
## 44           5.0         3.5          1.6         0.6
## 45           5.1         3.8          1.9         0.4
## 46           4.8         3.0          1.4         0.3
## 47           5.1         3.8          1.6         0.2
## 48           4.6         3.2          1.4         0.2
## 49           5.3         3.7          1.5         0.2
## 50           5.0         3.3          1.4         0.2
## 51           7.0         3.2          4.7         1.4
## 52           6.4         3.2          4.5         1.5
## 53           6.9         3.1          4.9         1.5
## 54           5.5         2.3          4.0         1.3
## 55           6.5         2.8          4.6         1.5
## 56           5.7         2.8          4.5         1.3
## 57           6.3         3.3          4.7         1.6
## 58           4.9         2.4          3.3         1.0
## 59           6.6         2.9          4.6         1.3
## 60           5.2         2.7          3.9         1.4
## 61           5.0         2.0          3.5         1.0
## 62           5.9         3.0          4.2         1.5
## 63           6.0         2.2          4.0         1.0
## 64           6.1         2.9          4.7         1.4
## 65           5.6         2.9          3.6         1.3
## 66           6.7         3.1          4.4         1.4
## 67           5.6         3.0          4.5         1.5
## 68           5.8         2.7          4.1         1.0
## 69           6.2         2.2          4.5         1.5
## 70           5.6         2.5          3.9         1.1
## 71           5.9         3.2          4.8         1.8
## 72           6.1         2.8          4.0         1.3
## 73           6.3         2.5          4.9         1.5
## 74           6.1         2.8          4.7         1.2
## 75           6.4         2.9          4.3         1.3
## 76           6.6         3.0          4.4         1.4
## 77           6.8         2.8          4.8         1.4
## 78           6.7         3.0          5.0         1.7
## 79           6.0         2.9          4.5         1.5
## 80           5.7         2.6          3.5         1.0
## 81           5.5         2.4          3.8         1.1
## 82           5.5         2.4          3.7         1.0
## 83           5.8         2.7          3.9         1.2
## 84           6.0         2.7          5.1         1.6
## 85           5.4         3.0          4.5         1.5
## 86           6.0         3.4          4.5         1.6
## 87           6.7         3.1          4.7         1.5
## 88           6.3         2.3          4.4         1.3
## 89           5.6         3.0          4.1         1.3
## 90           5.5         2.5          4.0         1.3
## 91           5.5         2.6          4.4         1.2
## 92           6.1         3.0          4.6         1.4
## 93           5.8         2.6          4.0         1.2
## 94           5.0         2.3          3.3         1.0
## 95           5.6         2.7          4.2         1.3
## 96           5.7         3.0          4.2         1.2
## 97           5.7         2.9          4.2         1.3
## 98           6.2         2.9          4.3         1.3
## 99           5.1         2.5          3.0         1.1
## 100          5.7         2.8          4.1         1.3
## 101          6.3         3.3          6.0         2.5
## 102          5.8         2.7          5.1         1.9
## 103          7.1         3.0          5.9         2.1
## 104          6.3         2.9          5.6         1.8
## 105          6.5         3.0          5.8         2.2
## 106          7.6         3.0          6.6         2.1
## 107          4.9         2.5          4.5         1.7
## 108          7.3         2.9          6.3         1.8
## 109          6.7         2.5          5.8         1.8
## 110          7.2         3.6          6.1         2.5
## 111          6.5         3.2          5.1         2.0
## 112          6.4         2.7          5.3         1.9
## 113          6.8         3.0          5.5         2.1
## 114          5.7         2.5          5.0         2.0
## 115          5.8         2.8          5.1         2.4
## 116          6.4         3.2          5.3         2.3
## 117          6.5         3.0          5.5         1.8
## 118          7.7         3.8          6.7         2.2
## 119          7.7         2.6          6.9         2.3
## 120          6.0         2.2          5.0         1.5
## 121          6.9         3.2          5.7         2.3
## 122          5.6         2.8          4.9         2.0
## 123          7.7         2.8          6.7         2.0
## 124          6.3         2.7          4.9         1.8
## 125          6.7         3.3          5.7         2.1
## 126          7.2         3.2          6.0         1.8
## 127          6.2         2.8          4.8         1.8
## 128          6.1         3.0          4.9         1.8
## 129          6.4         2.8          5.6         2.1
## 130          7.2         3.0          5.8         1.6
## 131          7.4         2.8          6.1         1.9
## 132          7.9         3.8          6.4         2.0
## 133          6.4         2.8          5.6         2.2
## 134          6.3         2.8          5.1         1.5
## 135          6.1         2.6          5.6         1.4
## 136          7.7         3.0          6.1         2.3
## 137          6.3         3.4          5.6         2.4
## 138          6.4         3.1          5.5         1.8
## 139          6.0         3.0          4.8         1.8
## 140          6.9         3.1          5.4         2.1
## 141          6.7         3.1          5.6         2.4
## 142          6.9         3.1          5.1         2.3
## 143          5.8         2.7          5.1         1.9
## 144          6.8         3.2          5.9         2.3
## 145          6.7         3.3          5.7         2.5
## 146          6.7         3.0          5.2         2.3
## 147          6.3         2.5          5.0         1.9
## 148          6.5         3.0          5.2         2.0
## 149          6.2         3.4          5.4         2.3
## 150          5.9         3.0          5.1         1.8

Como apenas a variável Species não possuia valores numéricos, apenas ela não foi selecionada.

4 Sumarizando

Em algumas situações, é necessário extrair valores ou propriedades de um dataset, ou pelo menos de algumas de suas variáveis, como o nº vezes que certo elemento ocorre em uma variável ou o desvio padrão dos valores de uma variável, baseando-se numa divisão em outra variável, sumarizando. Tradicionalmente, há como fazer no R comm pacotes nativos ou operações básicas, mas isso exigia tempo e podia ser desnecessariamente complexo em algumas situações mais diversas. O pacote dplyr possui uma função para fazer isso, que é a função summarise(). Ela cria a sumarização dos dados.

4.1 pacotes exigidos

library(tidyverse)

4.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

4.3 Contagens de linhas

Calculando o nº de linhas do dataset.

starwars %>% 
  summarise(ocorrência=n()) 
## # A tibble: 1 × 1
##   ocorrência
##        <int>
## 1         87

4.4 contagens de ocorrências de uma variável

É possível também fazer essas operações para cada tipo de ocorrência das variáveis, como por exemplo ver quantas vezes cada lugar de uma variável localidad aparece em um dataset. É possível fazer isso antes utilizando a função group_by() na variável desejada. Aqui, será calculado o nº de vezes que cada cor de cabelo dos personagens da franquia Starwars aparecem na variável hair_color.

starwars %>% 
  group_by(hair_color) %>% 
  summarise(ocorrência=n()) 
## # A tibble: 13 × 2
##    hair_color    ocorrência
##    <chr>              <int>
##  1 auburn                 1
##  2 auburn, grey           1
##  3 auburn, white          1
##  4 black                 13
##  5 blond                  3
##  6 blonde                 1
##  7 brown                 18
##  8 brown, grey            1
##  9 grey                   1
## 10 none                  37
## 11 unknown                1
## 12 white                  4
## 13 <NA>                   5

Outra forma de visualizar estes resultados é na forma de uma tabela. A função kable(), do pacote knitr.

starwars %>% 
  group_by(hair_color) %>% 
  summarise(ocorrência=n()) 
## # A tibble: 13 × 2
##    hair_color    ocorrência
##    <chr>              <int>
##  1 auburn                 1
##  2 auburn, grey           1
##  3 auburn, white          1
##  4 black                 13
##  5 blond                  3
##  6 blonde                 1
##  7 brown                 18
##  8 brown, grey            1
##  9 grey                   1
## 10 none                  37
## 11 unknown                1
## 12 white                  4
## 13 <NA>                   5

Para facilitar, os próximos resultados estarão com a função kable().

4.5 Contagem das ocorrências de mais uma variável

Calculando o nº de elementos da variável da cor de cabelo dos personagens em relação à cor de olho.

starwars %>% 
  group_by(hair_color, eye_color) %>% 
  summarise(ocorrência=n()) 
## # A tibble: 35 × 3
## # Groups:   hair_color [13]
##    hair_color    eye_color ocorrência
##    <chr>         <chr>          <int>
##  1 auburn        blue               1
##  2 auburn, grey  blue               1
##  3 auburn, white blue-gray          1
##  4 black         blue               2
##  5 black         brown              9
##  6 black         dark               1
##  7 black         yellow             1
##  8 blond         blue               3
##  9 blonde        yellow             1
## 10 brown         blue               7
## # … with 25 more rows

4.6 Outras operações com os elementos das variáveis

4.6.1 Valor mínimo

Calculando ao valor mínimo dos dados do comprimento das sépalas.

iris %>% 
  summarise(`Valor Mínimo`=min(Sepal.Length)) 
##   Valor Mínimo
## 1          4.3

4.6.2 Valor máximo

Calculando o valor máximo dos dados do comprimento das sépalas.

iris %>% 
  summarise(`Valor Máximo`=max(Sepal.Length)) 
##   Valor Máximo
## 1          7.9

4.6.3 Valor médio

Calculando o valor mediano dos dados do comprimento das sépalas.

iris %>% 
  summarise(`Valor Médio`=median(Sepal.Length)) 
##   Valor Médio
## 1         5.8

4.6.4 Soma

Calculando a soma dos dados do comprimento das sépalas.

iris %>% 
  summarise(Soma=sum(Sepal.Length))
##    Soma
## 1 876.5

4.6.5 Média

Calculando a média dos dados do comprimento das sépalas.

iris %>% 
  summarise(Média=mean(Sepal.Length)) 
##      Média
## 1 5.843333

4.6.6 Desvio Padrão

Calculando o desvio padrão dos dados do comprimento da sépala.

iris %>% 
  summarise(`Desvio Padrão`=sd(Sepal.Length)) 
##   Desvio Padrão
## 1     0.8280661

4.6.7 Mais de uma operação ao mesmo tempo

iris %>% 
  summarise(Soma=sum(Sepal.Length),Média=mean(Sepal.Length), `Desvio Padrão`=sd(Sepal.Length))
##    Soma    Média Desvio Padrão
## 1 876.5 5.843333     0.8280661

5 Criando novas variáveis

Um tipo de coisa que ocorre com uma certa frequência é usar elementos e propriedades do dataset para criar novas variáveis. Estas variáveis podem ser fruto do Tidying Data, como juntar várias variáveis em pouccas, como exemplo dado no incício dessa apostila, ou o inverso, transformar um conjunto de poucas variáveis em várias novas. Há também o caso das variáveis condicionais, onde os seus valores são condicionados à natureza dos dados de uma varável prévia do dataset, como criar uma nova variáveç sobre o governo federal baseado na variável ano. Existe uma série de funções para isso, que serão utilizadas nesse capítulo.

5.1 Pacotes exigidos

library(tidyverse)

5.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

5.3 Criando novas variáveis para um dataset

Nova variável criada pela soma dos valores do comprimento e da largura das sépalas.

iris$`Nova_Variável`<-iris$Sepal.Length+iris$Sepal.Width

iris # conferindo a nova variável
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Nova_Variável
## 1            5.1         3.5          1.4         0.2     setosa           8.6
## 2            4.9         3.0          1.4         0.2     setosa           7.9
## 3            4.7         3.2          1.3         0.2     setosa           7.9
## 4            4.6         3.1          1.5         0.2     setosa           7.7
## 5            5.0         3.6          1.4         0.2     setosa           8.6
## 6            5.4         3.9          1.7         0.4     setosa           9.3
## 7            4.6         3.4          1.4         0.3     setosa           8.0
## 8            5.0         3.4          1.5         0.2     setosa           8.4
## 9            4.4         2.9          1.4         0.2     setosa           7.3
## 10           4.9         3.1          1.5         0.1     setosa           8.0
## 11           5.4         3.7          1.5         0.2     setosa           9.1
## 12           4.8         3.4          1.6         0.2     setosa           8.2
## 13           4.8         3.0          1.4         0.1     setosa           7.8
## 14           4.3         3.0          1.1         0.1     setosa           7.3
## 15           5.8         4.0          1.2         0.2     setosa           9.8
## 16           5.7         4.4          1.5         0.4     setosa          10.1
## 17           5.4         3.9          1.3         0.4     setosa           9.3
## 18           5.1         3.5          1.4         0.3     setosa           8.6
## 19           5.7         3.8          1.7         0.3     setosa           9.5
## 20           5.1         3.8          1.5         0.3     setosa           8.9
## 21           5.4         3.4          1.7         0.2     setosa           8.8
## 22           5.1         3.7          1.5         0.4     setosa           8.8
## 23           4.6         3.6          1.0         0.2     setosa           8.2
## 24           5.1         3.3          1.7         0.5     setosa           8.4
## 25           4.8         3.4          1.9         0.2     setosa           8.2
## 26           5.0         3.0          1.6         0.2     setosa           8.0
## 27           5.0         3.4          1.6         0.4     setosa           8.4
## 28           5.2         3.5          1.5         0.2     setosa           8.7
## 29           5.2         3.4          1.4         0.2     setosa           8.6
## 30           4.7         3.2          1.6         0.2     setosa           7.9
## 31           4.8         3.1          1.6         0.2     setosa           7.9
## 32           5.4         3.4          1.5         0.4     setosa           8.8
## 33           5.2         4.1          1.5         0.1     setosa           9.3
## 34           5.5         4.2          1.4         0.2     setosa           9.7
## 35           4.9         3.1          1.5         0.2     setosa           8.0
## 36           5.0         3.2          1.2         0.2     setosa           8.2
## 37           5.5         3.5          1.3         0.2     setosa           9.0
## 38           4.9         3.6          1.4         0.1     setosa           8.5
## 39           4.4         3.0          1.3         0.2     setosa           7.4
## 40           5.1         3.4          1.5         0.2     setosa           8.5
## 41           5.0         3.5          1.3         0.3     setosa           8.5
## 42           4.5         2.3          1.3         0.3     setosa           6.8
## 43           4.4         3.2          1.3         0.2     setosa           7.6
## 44           5.0         3.5          1.6         0.6     setosa           8.5
## 45           5.1         3.8          1.9         0.4     setosa           8.9
## 46           4.8         3.0          1.4         0.3     setosa           7.8
## 47           5.1         3.8          1.6         0.2     setosa           8.9
## 48           4.6         3.2          1.4         0.2     setosa           7.8
## 49           5.3         3.7          1.5         0.2     setosa           9.0
## 50           5.0         3.3          1.4         0.2     setosa           8.3
## 51           7.0         3.2          4.7         1.4 versicolor          10.2
## 52           6.4         3.2          4.5         1.5 versicolor           9.6
## 53           6.9         3.1          4.9         1.5 versicolor          10.0
## 54           5.5         2.3          4.0         1.3 versicolor           7.8
## 55           6.5         2.8          4.6         1.5 versicolor           9.3
## 56           5.7         2.8          4.5         1.3 versicolor           8.5
## 57           6.3         3.3          4.7         1.6 versicolor           9.6
## 58           4.9         2.4          3.3         1.0 versicolor           7.3
## 59           6.6         2.9          4.6         1.3 versicolor           9.5
## 60           5.2         2.7          3.9         1.4 versicolor           7.9
## 61           5.0         2.0          3.5         1.0 versicolor           7.0
## 62           5.9         3.0          4.2         1.5 versicolor           8.9
## 63           6.0         2.2          4.0         1.0 versicolor           8.2
## 64           6.1         2.9          4.7         1.4 versicolor           9.0
## 65           5.6         2.9          3.6         1.3 versicolor           8.5
## 66           6.7         3.1          4.4         1.4 versicolor           9.8
## 67           5.6         3.0          4.5         1.5 versicolor           8.6
## 68           5.8         2.7          4.1         1.0 versicolor           8.5
## 69           6.2         2.2          4.5         1.5 versicolor           8.4
## 70           5.6         2.5          3.9         1.1 versicolor           8.1
## 71           5.9         3.2          4.8         1.8 versicolor           9.1
## 72           6.1         2.8          4.0         1.3 versicolor           8.9
## 73           6.3         2.5          4.9         1.5 versicolor           8.8
## 74           6.1         2.8          4.7         1.2 versicolor           8.9
## 75           6.4         2.9          4.3         1.3 versicolor           9.3
## 76           6.6         3.0          4.4         1.4 versicolor           9.6
## 77           6.8         2.8          4.8         1.4 versicolor           9.6
## 78           6.7         3.0          5.0         1.7 versicolor           9.7
## 79           6.0         2.9          4.5         1.5 versicolor           8.9
## 80           5.7         2.6          3.5         1.0 versicolor           8.3
## 81           5.5         2.4          3.8         1.1 versicolor           7.9
## 82           5.5         2.4          3.7         1.0 versicolor           7.9
## 83           5.8         2.7          3.9         1.2 versicolor           8.5
## 84           6.0         2.7          5.1         1.6 versicolor           8.7
## 85           5.4         3.0          4.5         1.5 versicolor           8.4
## 86           6.0         3.4          4.5         1.6 versicolor           9.4
## 87           6.7         3.1          4.7         1.5 versicolor           9.8
## 88           6.3         2.3          4.4         1.3 versicolor           8.6
## 89           5.6         3.0          4.1         1.3 versicolor           8.6
## 90           5.5         2.5          4.0         1.3 versicolor           8.0
## 91           5.5         2.6          4.4         1.2 versicolor           8.1
## 92           6.1         3.0          4.6         1.4 versicolor           9.1
## 93           5.8         2.6          4.0         1.2 versicolor           8.4
## 94           5.0         2.3          3.3         1.0 versicolor           7.3
## 95           5.6         2.7          4.2         1.3 versicolor           8.3
## 96           5.7         3.0          4.2         1.2 versicolor           8.7
## 97           5.7         2.9          4.2         1.3 versicolor           8.6
## 98           6.2         2.9          4.3         1.3 versicolor           9.1
## 99           5.1         2.5          3.0         1.1 versicolor           7.6
## 100          5.7         2.8          4.1         1.3 versicolor           8.5
## 101          6.3         3.3          6.0         2.5  virginica           9.6
## 102          5.8         2.7          5.1         1.9  virginica           8.5
## 103          7.1         3.0          5.9         2.1  virginica          10.1
## 104          6.3         2.9          5.6         1.8  virginica           9.2
## 105          6.5         3.0          5.8         2.2  virginica           9.5
## 106          7.6         3.0          6.6         2.1  virginica          10.6
## 107          4.9         2.5          4.5         1.7  virginica           7.4
## 108          7.3         2.9          6.3         1.8  virginica          10.2
## 109          6.7         2.5          5.8         1.8  virginica           9.2
## 110          7.2         3.6          6.1         2.5  virginica          10.8
## 111          6.5         3.2          5.1         2.0  virginica           9.7
## 112          6.4         2.7          5.3         1.9  virginica           9.1
## 113          6.8         3.0          5.5         2.1  virginica           9.8
## 114          5.7         2.5          5.0         2.0  virginica           8.2
## 115          5.8         2.8          5.1         2.4  virginica           8.6
## 116          6.4         3.2          5.3         2.3  virginica           9.6
## 117          6.5         3.0          5.5         1.8  virginica           9.5
## 118          7.7         3.8          6.7         2.2  virginica          11.5
## 119          7.7         2.6          6.9         2.3  virginica          10.3
## 120          6.0         2.2          5.0         1.5  virginica           8.2
## 121          6.9         3.2          5.7         2.3  virginica          10.1
## 122          5.6         2.8          4.9         2.0  virginica           8.4
## 123          7.7         2.8          6.7         2.0  virginica          10.5
## 124          6.3         2.7          4.9         1.8  virginica           9.0
## 125          6.7         3.3          5.7         2.1  virginica          10.0
## 126          7.2         3.2          6.0         1.8  virginica          10.4
## 127          6.2         2.8          4.8         1.8  virginica           9.0
## 128          6.1         3.0          4.9         1.8  virginica           9.1
## 129          6.4         2.8          5.6         2.1  virginica           9.2
## 130          7.2         3.0          5.8         1.6  virginica          10.2
## 131          7.4         2.8          6.1         1.9  virginica          10.2
## 132          7.9         3.8          6.4         2.0  virginica          11.7
## 133          6.4         2.8          5.6         2.2  virginica           9.2
## 134          6.3         2.8          5.1         1.5  virginica           9.1
## 135          6.1         2.6          5.6         1.4  virginica           8.7
## 136          7.7         3.0          6.1         2.3  virginica          10.7
## 137          6.3         3.4          5.6         2.4  virginica           9.7
## 138          6.4         3.1          5.5         1.8  virginica           9.5
## 139          6.0         3.0          4.8         1.8  virginica           9.0
## 140          6.9         3.1          5.4         2.1  virginica          10.0
## 141          6.7         3.1          5.6         2.4  virginica           9.8
## 142          6.9         3.1          5.1         2.3  virginica          10.0
## 143          5.8         2.7          5.1         1.9  virginica           8.5
## 144          6.8         3.2          5.9         2.3  virginica          10.0
## 145          6.7         3.3          5.7         2.5  virginica          10.0
## 146          6.7         3.0          5.2         2.3  virginica           9.7
## 147          6.3         2.5          5.0         1.9  virginica           8.8
## 148          6.5         3.0          5.2         2.0  virginica           9.5
## 149          6.2         3.4          5.4         2.3  virginica           9.6
## 150          5.9         3.0          5.1         1.8  virginica           8.9

5.4 Condicionais

5.4.1 Condicionais binárias

Usando a funçãoo ifelse() para criar uma nova variável baseada em uma condição binária: se a pétala possuir um comprimento maior que 4 na variável Petal.Length, constará na variável “É uma Pétala Comprida?” como “Sim”; se não, constará como “Não. É uma condição binária pois só há duas possibilidade de resposta.

iris %>% 
  mutate(`É uma Pétala Comprida?`=ifelse(Petal.Length>4,"Sim","Não"))
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Nova_Variável
## 1            5.1         3.5          1.4         0.2     setosa           8.6
## 2            4.9         3.0          1.4         0.2     setosa           7.9
## 3            4.7         3.2          1.3         0.2     setosa           7.9
## 4            4.6         3.1          1.5         0.2     setosa           7.7
## 5            5.0         3.6          1.4         0.2     setosa           8.6
## 6            5.4         3.9          1.7         0.4     setosa           9.3
## 7            4.6         3.4          1.4         0.3     setosa           8.0
## 8            5.0         3.4          1.5         0.2     setosa           8.4
## 9            4.4         2.9          1.4         0.2     setosa           7.3
## 10           4.9         3.1          1.5         0.1     setosa           8.0
## 11           5.4         3.7          1.5         0.2     setosa           9.1
## 12           4.8         3.4          1.6         0.2     setosa           8.2
## 13           4.8         3.0          1.4         0.1     setosa           7.8
## 14           4.3         3.0          1.1         0.1     setosa           7.3
## 15           5.8         4.0          1.2         0.2     setosa           9.8
## 16           5.7         4.4          1.5         0.4     setosa          10.1
## 17           5.4         3.9          1.3         0.4     setosa           9.3
## 18           5.1         3.5          1.4         0.3     setosa           8.6
## 19           5.7         3.8          1.7         0.3     setosa           9.5
## 20           5.1         3.8          1.5         0.3     setosa           8.9
## 21           5.4         3.4          1.7         0.2     setosa           8.8
## 22           5.1         3.7          1.5         0.4     setosa           8.8
## 23           4.6         3.6          1.0         0.2     setosa           8.2
## 24           5.1         3.3          1.7         0.5     setosa           8.4
## 25           4.8         3.4          1.9         0.2     setosa           8.2
## 26           5.0         3.0          1.6         0.2     setosa           8.0
## 27           5.0         3.4          1.6         0.4     setosa           8.4
## 28           5.2         3.5          1.5         0.2     setosa           8.7
## 29           5.2         3.4          1.4         0.2     setosa           8.6
## 30           4.7         3.2          1.6         0.2     setosa           7.9
## 31           4.8         3.1          1.6         0.2     setosa           7.9
## 32           5.4         3.4          1.5         0.4     setosa           8.8
## 33           5.2         4.1          1.5         0.1     setosa           9.3
## 34           5.5         4.2          1.4         0.2     setosa           9.7
## 35           4.9         3.1          1.5         0.2     setosa           8.0
## 36           5.0         3.2          1.2         0.2     setosa           8.2
## 37           5.5         3.5          1.3         0.2     setosa           9.0
## 38           4.9         3.6          1.4         0.1     setosa           8.5
## 39           4.4         3.0          1.3         0.2     setosa           7.4
## 40           5.1         3.4          1.5         0.2     setosa           8.5
## 41           5.0         3.5          1.3         0.3     setosa           8.5
## 42           4.5         2.3          1.3         0.3     setosa           6.8
## 43           4.4         3.2          1.3         0.2     setosa           7.6
## 44           5.0         3.5          1.6         0.6     setosa           8.5
## 45           5.1         3.8          1.9         0.4     setosa           8.9
## 46           4.8         3.0          1.4         0.3     setosa           7.8
## 47           5.1         3.8          1.6         0.2     setosa           8.9
## 48           4.6         3.2          1.4         0.2     setosa           7.8
## 49           5.3         3.7          1.5         0.2     setosa           9.0
## 50           5.0         3.3          1.4         0.2     setosa           8.3
## 51           7.0         3.2          4.7         1.4 versicolor          10.2
## 52           6.4         3.2          4.5         1.5 versicolor           9.6
## 53           6.9         3.1          4.9         1.5 versicolor          10.0
## 54           5.5         2.3          4.0         1.3 versicolor           7.8
## 55           6.5         2.8          4.6         1.5 versicolor           9.3
## 56           5.7         2.8          4.5         1.3 versicolor           8.5
## 57           6.3         3.3          4.7         1.6 versicolor           9.6
## 58           4.9         2.4          3.3         1.0 versicolor           7.3
## 59           6.6         2.9          4.6         1.3 versicolor           9.5
## 60           5.2         2.7          3.9         1.4 versicolor           7.9
## 61           5.0         2.0          3.5         1.0 versicolor           7.0
## 62           5.9         3.0          4.2         1.5 versicolor           8.9
## 63           6.0         2.2          4.0         1.0 versicolor           8.2
## 64           6.1         2.9          4.7         1.4 versicolor           9.0
## 65           5.6         2.9          3.6         1.3 versicolor           8.5
## 66           6.7         3.1          4.4         1.4 versicolor           9.8
## 67           5.6         3.0          4.5         1.5 versicolor           8.6
## 68           5.8         2.7          4.1         1.0 versicolor           8.5
## 69           6.2         2.2          4.5         1.5 versicolor           8.4
## 70           5.6         2.5          3.9         1.1 versicolor           8.1
## 71           5.9         3.2          4.8         1.8 versicolor           9.1
## 72           6.1         2.8          4.0         1.3 versicolor           8.9
## 73           6.3         2.5          4.9         1.5 versicolor           8.8
## 74           6.1         2.8          4.7         1.2 versicolor           8.9
## 75           6.4         2.9          4.3         1.3 versicolor           9.3
## 76           6.6         3.0          4.4         1.4 versicolor           9.6
## 77           6.8         2.8          4.8         1.4 versicolor           9.6
## 78           6.7         3.0          5.0         1.7 versicolor           9.7
## 79           6.0         2.9          4.5         1.5 versicolor           8.9
## 80           5.7         2.6          3.5         1.0 versicolor           8.3
## 81           5.5         2.4          3.8         1.1 versicolor           7.9
## 82           5.5         2.4          3.7         1.0 versicolor           7.9
## 83           5.8         2.7          3.9         1.2 versicolor           8.5
## 84           6.0         2.7          5.1         1.6 versicolor           8.7
## 85           5.4         3.0          4.5         1.5 versicolor           8.4
## 86           6.0         3.4          4.5         1.6 versicolor           9.4
## 87           6.7         3.1          4.7         1.5 versicolor           9.8
## 88           6.3         2.3          4.4         1.3 versicolor           8.6
## 89           5.6         3.0          4.1         1.3 versicolor           8.6
## 90           5.5         2.5          4.0         1.3 versicolor           8.0
## 91           5.5         2.6          4.4         1.2 versicolor           8.1
## 92           6.1         3.0          4.6         1.4 versicolor           9.1
## 93           5.8         2.6          4.0         1.2 versicolor           8.4
## 94           5.0         2.3          3.3         1.0 versicolor           7.3
## 95           5.6         2.7          4.2         1.3 versicolor           8.3
## 96           5.7         3.0          4.2         1.2 versicolor           8.7
## 97           5.7         2.9          4.2         1.3 versicolor           8.6
## 98           6.2         2.9          4.3         1.3 versicolor           9.1
## 99           5.1         2.5          3.0         1.1 versicolor           7.6
## 100          5.7         2.8          4.1         1.3 versicolor           8.5
## 101          6.3         3.3          6.0         2.5  virginica           9.6
## 102          5.8         2.7          5.1         1.9  virginica           8.5
## 103          7.1         3.0          5.9         2.1  virginica          10.1
## 104          6.3         2.9          5.6         1.8  virginica           9.2
## 105          6.5         3.0          5.8         2.2  virginica           9.5
## 106          7.6         3.0          6.6         2.1  virginica          10.6
## 107          4.9         2.5          4.5         1.7  virginica           7.4
## 108          7.3         2.9          6.3         1.8  virginica          10.2
## 109          6.7         2.5          5.8         1.8  virginica           9.2
## 110          7.2         3.6          6.1         2.5  virginica          10.8
## 111          6.5         3.2          5.1         2.0  virginica           9.7
## 112          6.4         2.7          5.3         1.9  virginica           9.1
## 113          6.8         3.0          5.5         2.1  virginica           9.8
## 114          5.7         2.5          5.0         2.0  virginica           8.2
## 115          5.8         2.8          5.1         2.4  virginica           8.6
## 116          6.4         3.2          5.3         2.3  virginica           9.6
## 117          6.5         3.0          5.5         1.8  virginica           9.5
## 118          7.7         3.8          6.7         2.2  virginica          11.5
## 119          7.7         2.6          6.9         2.3  virginica          10.3
## 120          6.0         2.2          5.0         1.5  virginica           8.2
## 121          6.9         3.2          5.7         2.3  virginica          10.1
## 122          5.6         2.8          4.9         2.0  virginica           8.4
## 123          7.7         2.8          6.7         2.0  virginica          10.5
## 124          6.3         2.7          4.9         1.8  virginica           9.0
## 125          6.7         3.3          5.7         2.1  virginica          10.0
## 126          7.2         3.2          6.0         1.8  virginica          10.4
## 127          6.2         2.8          4.8         1.8  virginica           9.0
## 128          6.1         3.0          4.9         1.8  virginica           9.1
## 129          6.4         2.8          5.6         2.1  virginica           9.2
## 130          7.2         3.0          5.8         1.6  virginica          10.2
## 131          7.4         2.8          6.1         1.9  virginica          10.2
## 132          7.9         3.8          6.4         2.0  virginica          11.7
## 133          6.4         2.8          5.6         2.2  virginica           9.2
## 134          6.3         2.8          5.1         1.5  virginica           9.1
## 135          6.1         2.6          5.6         1.4  virginica           8.7
## 136          7.7         3.0          6.1         2.3  virginica          10.7
## 137          6.3         3.4          5.6         2.4  virginica           9.7
## 138          6.4         3.1          5.5         1.8  virginica           9.5
## 139          6.0         3.0          4.8         1.8  virginica           9.0
## 140          6.9         3.1          5.4         2.1  virginica          10.0
## 141          6.7         3.1          5.6         2.4  virginica           9.8
## 142          6.9         3.1          5.1         2.3  virginica          10.0
## 143          5.8         2.7          5.1         1.9  virginica           8.5
## 144          6.8         3.2          5.9         2.3  virginica          10.0
## 145          6.7         3.3          5.7         2.5  virginica          10.0
## 146          6.7         3.0          5.2         2.3  virginica           9.7
## 147          6.3         2.5          5.0         1.9  virginica           8.8
## 148          6.5         3.0          5.2         2.0  virginica           9.5
## 149          6.2         3.4          5.4         2.3  virginica           9.6
## 150          5.9         3.0          5.1         1.8  virginica           8.9
##     É uma Pétala Comprida?
## 1                      Não
## 2                      Não
## 3                      Não
## 4                      Não
## 5                      Não
## 6                      Não
## 7                      Não
## 8                      Não
## 9                      Não
## 10                     Não
## 11                     Não
## 12                     Não
## 13                     Não
## 14                     Não
## 15                     Não
## 16                     Não
## 17                     Não
## 18                     Não
## 19                     Não
## 20                     Não
## 21                     Não
## 22                     Não
## 23                     Não
## 24                     Não
## 25                     Não
## 26                     Não
## 27                     Não
## 28                     Não
## 29                     Não
## 30                     Não
## 31                     Não
## 32                     Não
## 33                     Não
## 34                     Não
## 35                     Não
## 36                     Não
## 37                     Não
## 38                     Não
## 39                     Não
## 40                     Não
## 41                     Não
## 42                     Não
## 43                     Não
## 44                     Não
## 45                     Não
## 46                     Não
## 47                     Não
## 48                     Não
## 49                     Não
## 50                     Não
## 51                     Sim
## 52                     Sim
## 53                     Sim
## 54                     Não
## 55                     Sim
## 56                     Sim
## 57                     Sim
## 58                     Não
## 59                     Sim
## 60                     Não
## 61                     Não
## 62                     Sim
## 63                     Não
## 64                     Sim
## 65                     Não
## 66                     Sim
## 67                     Sim
## 68                     Sim
## 69                     Sim
## 70                     Não
## 71                     Sim
## 72                     Não
## 73                     Sim
## 74                     Sim
## 75                     Sim
## 76                     Sim
## 77                     Sim
## 78                     Sim
## 79                     Sim
## 80                     Não
## 81                     Não
## 82                     Não
## 83                     Não
## 84                     Sim
## 85                     Sim
## 86                     Sim
## 87                     Sim
## 88                     Sim
## 89                     Sim
## 90                     Não
## 91                     Sim
## 92                     Sim
## 93                     Não
## 94                     Não
## 95                     Sim
## 96                     Sim
## 97                     Sim
## 98                     Sim
## 99                     Não
## 100                    Sim
## 101                    Sim
## 102                    Sim
## 103                    Sim
## 104                    Sim
## 105                    Sim
## 106                    Sim
## 107                    Sim
## 108                    Sim
## 109                    Sim
## 110                    Sim
## 111                    Sim
## 112                    Sim
## 113                    Sim
## 114                    Sim
## 115                    Sim
## 116                    Sim
## 117                    Sim
## 118                    Sim
## 119                    Sim
## 120                    Sim
## 121                    Sim
## 122                    Sim
## 123                    Sim
## 124                    Sim
## 125                    Sim
## 126                    Sim
## 127                    Sim
## 128                    Sim
## 129                    Sim
## 130                    Sim
## 131                    Sim
## 132                    Sim
## 133                    Sim
## 134                    Sim
## 135                    Sim
## 136                    Sim
## 137                    Sim
## 138                    Sim
## 139                    Sim
## 140                    Sim
## 141                    Sim
## 142                    Sim
## 143                    Sim
## 144                    Sim
## 145                    Sim
## 146                    Sim
## 147                    Sim
## 148                    Sim
## 149                    Sim
## 150                    Sim

5.4.2 Condicionais não-binárias

Usando a função mutate() para criar uma variável condicional, baseada na massa, através da função case_when(). É uma condicional não-binária pois há mais do que duas possibilidades de resposta.

iris %>% 
  mutate(`Tipo de Largura`=case_when(Sepal.Width<3~"Baixa",
                                     Sepal.Width>=3 & Sepal.Width<=3.5~"Moderada",
                                     Sepal.Width>3.5~"Alta")
         ) 
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Nova_Variável
## 1            5.1         3.5          1.4         0.2     setosa           8.6
## 2            4.9         3.0          1.4         0.2     setosa           7.9
## 3            4.7         3.2          1.3         0.2     setosa           7.9
## 4            4.6         3.1          1.5         0.2     setosa           7.7
## 5            5.0         3.6          1.4         0.2     setosa           8.6
## 6            5.4         3.9          1.7         0.4     setosa           9.3
## 7            4.6         3.4          1.4         0.3     setosa           8.0
## 8            5.0         3.4          1.5         0.2     setosa           8.4
## 9            4.4         2.9          1.4         0.2     setosa           7.3
## 10           4.9         3.1          1.5         0.1     setosa           8.0
## 11           5.4         3.7          1.5         0.2     setosa           9.1
## 12           4.8         3.4          1.6         0.2     setosa           8.2
## 13           4.8         3.0          1.4         0.1     setosa           7.8
## 14           4.3         3.0          1.1         0.1     setosa           7.3
## 15           5.8         4.0          1.2         0.2     setosa           9.8
## 16           5.7         4.4          1.5         0.4     setosa          10.1
## 17           5.4         3.9          1.3         0.4     setosa           9.3
## 18           5.1         3.5          1.4         0.3     setosa           8.6
## 19           5.7         3.8          1.7         0.3     setosa           9.5
## 20           5.1         3.8          1.5         0.3     setosa           8.9
## 21           5.4         3.4          1.7         0.2     setosa           8.8
## 22           5.1         3.7          1.5         0.4     setosa           8.8
## 23           4.6         3.6          1.0         0.2     setosa           8.2
## 24           5.1         3.3          1.7         0.5     setosa           8.4
## 25           4.8         3.4          1.9         0.2     setosa           8.2
## 26           5.0         3.0          1.6         0.2     setosa           8.0
## 27           5.0         3.4          1.6         0.4     setosa           8.4
## 28           5.2         3.5          1.5         0.2     setosa           8.7
## 29           5.2         3.4          1.4         0.2     setosa           8.6
## 30           4.7         3.2          1.6         0.2     setosa           7.9
## 31           4.8         3.1          1.6         0.2     setosa           7.9
## 32           5.4         3.4          1.5         0.4     setosa           8.8
## 33           5.2         4.1          1.5         0.1     setosa           9.3
## 34           5.5         4.2          1.4         0.2     setosa           9.7
## 35           4.9         3.1          1.5         0.2     setosa           8.0
## 36           5.0         3.2          1.2         0.2     setosa           8.2
## 37           5.5         3.5          1.3         0.2     setosa           9.0
## 38           4.9         3.6          1.4         0.1     setosa           8.5
## 39           4.4         3.0          1.3         0.2     setosa           7.4
## 40           5.1         3.4          1.5         0.2     setosa           8.5
## 41           5.0         3.5          1.3         0.3     setosa           8.5
## 42           4.5         2.3          1.3         0.3     setosa           6.8
## 43           4.4         3.2          1.3         0.2     setosa           7.6
## 44           5.0         3.5          1.6         0.6     setosa           8.5
## 45           5.1         3.8          1.9         0.4     setosa           8.9
## 46           4.8         3.0          1.4         0.3     setosa           7.8
## 47           5.1         3.8          1.6         0.2     setosa           8.9
## 48           4.6         3.2          1.4         0.2     setosa           7.8
## 49           5.3         3.7          1.5         0.2     setosa           9.0
## 50           5.0         3.3          1.4         0.2     setosa           8.3
## 51           7.0         3.2          4.7         1.4 versicolor          10.2
## 52           6.4         3.2          4.5         1.5 versicolor           9.6
## 53           6.9         3.1          4.9         1.5 versicolor          10.0
## 54           5.5         2.3          4.0         1.3 versicolor           7.8
## 55           6.5         2.8          4.6         1.5 versicolor           9.3
## 56           5.7         2.8          4.5         1.3 versicolor           8.5
## 57           6.3         3.3          4.7         1.6 versicolor           9.6
## 58           4.9         2.4          3.3         1.0 versicolor           7.3
## 59           6.6         2.9          4.6         1.3 versicolor           9.5
## 60           5.2         2.7          3.9         1.4 versicolor           7.9
## 61           5.0         2.0          3.5         1.0 versicolor           7.0
## 62           5.9         3.0          4.2         1.5 versicolor           8.9
## 63           6.0         2.2          4.0         1.0 versicolor           8.2
## 64           6.1         2.9          4.7         1.4 versicolor           9.0
## 65           5.6         2.9          3.6         1.3 versicolor           8.5
## 66           6.7         3.1          4.4         1.4 versicolor           9.8
## 67           5.6         3.0          4.5         1.5 versicolor           8.6
## 68           5.8         2.7          4.1         1.0 versicolor           8.5
## 69           6.2         2.2          4.5         1.5 versicolor           8.4
## 70           5.6         2.5          3.9         1.1 versicolor           8.1
## 71           5.9         3.2          4.8         1.8 versicolor           9.1
## 72           6.1         2.8          4.0         1.3 versicolor           8.9
## 73           6.3         2.5          4.9         1.5 versicolor           8.8
## 74           6.1         2.8          4.7         1.2 versicolor           8.9
## 75           6.4         2.9          4.3         1.3 versicolor           9.3
## 76           6.6         3.0          4.4         1.4 versicolor           9.6
## 77           6.8         2.8          4.8         1.4 versicolor           9.6
## 78           6.7         3.0          5.0         1.7 versicolor           9.7
## 79           6.0         2.9          4.5         1.5 versicolor           8.9
## 80           5.7         2.6          3.5         1.0 versicolor           8.3
## 81           5.5         2.4          3.8         1.1 versicolor           7.9
## 82           5.5         2.4          3.7         1.0 versicolor           7.9
## 83           5.8         2.7          3.9         1.2 versicolor           8.5
## 84           6.0         2.7          5.1         1.6 versicolor           8.7
## 85           5.4         3.0          4.5         1.5 versicolor           8.4
## 86           6.0         3.4          4.5         1.6 versicolor           9.4
## 87           6.7         3.1          4.7         1.5 versicolor           9.8
## 88           6.3         2.3          4.4         1.3 versicolor           8.6
## 89           5.6         3.0          4.1         1.3 versicolor           8.6
## 90           5.5         2.5          4.0         1.3 versicolor           8.0
## 91           5.5         2.6          4.4         1.2 versicolor           8.1
## 92           6.1         3.0          4.6         1.4 versicolor           9.1
## 93           5.8         2.6          4.0         1.2 versicolor           8.4
## 94           5.0         2.3          3.3         1.0 versicolor           7.3
## 95           5.6         2.7          4.2         1.3 versicolor           8.3
## 96           5.7         3.0          4.2         1.2 versicolor           8.7
## 97           5.7         2.9          4.2         1.3 versicolor           8.6
## 98           6.2         2.9          4.3         1.3 versicolor           9.1
## 99           5.1         2.5          3.0         1.1 versicolor           7.6
## 100          5.7         2.8          4.1         1.3 versicolor           8.5
## 101          6.3         3.3          6.0         2.5  virginica           9.6
## 102          5.8         2.7          5.1         1.9  virginica           8.5
## 103          7.1         3.0          5.9         2.1  virginica          10.1
## 104          6.3         2.9          5.6         1.8  virginica           9.2
## 105          6.5         3.0          5.8         2.2  virginica           9.5
## 106          7.6         3.0          6.6         2.1  virginica          10.6
## 107          4.9         2.5          4.5         1.7  virginica           7.4
## 108          7.3         2.9          6.3         1.8  virginica          10.2
## 109          6.7         2.5          5.8         1.8  virginica           9.2
## 110          7.2         3.6          6.1         2.5  virginica          10.8
## 111          6.5         3.2          5.1         2.0  virginica           9.7
## 112          6.4         2.7          5.3         1.9  virginica           9.1
## 113          6.8         3.0          5.5         2.1  virginica           9.8
## 114          5.7         2.5          5.0         2.0  virginica           8.2
## 115          5.8         2.8          5.1         2.4  virginica           8.6
## 116          6.4         3.2          5.3         2.3  virginica           9.6
## 117          6.5         3.0          5.5         1.8  virginica           9.5
## 118          7.7         3.8          6.7         2.2  virginica          11.5
## 119          7.7         2.6          6.9         2.3  virginica          10.3
## 120          6.0         2.2          5.0         1.5  virginica           8.2
## 121          6.9         3.2          5.7         2.3  virginica          10.1
## 122          5.6         2.8          4.9         2.0  virginica           8.4
## 123          7.7         2.8          6.7         2.0  virginica          10.5
## 124          6.3         2.7          4.9         1.8  virginica           9.0
## 125          6.7         3.3          5.7         2.1  virginica          10.0
## 126          7.2         3.2          6.0         1.8  virginica          10.4
## 127          6.2         2.8          4.8         1.8  virginica           9.0
## 128          6.1         3.0          4.9         1.8  virginica           9.1
## 129          6.4         2.8          5.6         2.1  virginica           9.2
## 130          7.2         3.0          5.8         1.6  virginica          10.2
## 131          7.4         2.8          6.1         1.9  virginica          10.2
## 132          7.9         3.8          6.4         2.0  virginica          11.7
## 133          6.4         2.8          5.6         2.2  virginica           9.2
## 134          6.3         2.8          5.1         1.5  virginica           9.1
## 135          6.1         2.6          5.6         1.4  virginica           8.7
## 136          7.7         3.0          6.1         2.3  virginica          10.7
## 137          6.3         3.4          5.6         2.4  virginica           9.7
## 138          6.4         3.1          5.5         1.8  virginica           9.5
## 139          6.0         3.0          4.8         1.8  virginica           9.0
## 140          6.9         3.1          5.4         2.1  virginica          10.0
## 141          6.7         3.1          5.6         2.4  virginica           9.8
## 142          6.9         3.1          5.1         2.3  virginica          10.0
## 143          5.8         2.7          5.1         1.9  virginica           8.5
## 144          6.8         3.2          5.9         2.3  virginica          10.0
## 145          6.7         3.3          5.7         2.5  virginica          10.0
## 146          6.7         3.0          5.2         2.3  virginica           9.7
## 147          6.3         2.5          5.0         1.9  virginica           8.8
## 148          6.5         3.0          5.2         2.0  virginica           9.5
## 149          6.2         3.4          5.4         2.3  virginica           9.6
## 150          5.9         3.0          5.1         1.8  virginica           8.9
##     Tipo de Largura
## 1          Moderada
## 2          Moderada
## 3          Moderada
## 4          Moderada
## 5              Alta
## 6              Alta
## 7          Moderada
## 8          Moderada
## 9             Baixa
## 10         Moderada
## 11             Alta
## 12         Moderada
## 13         Moderada
## 14         Moderada
## 15             Alta
## 16             Alta
## 17             Alta
## 18         Moderada
## 19             Alta
## 20             Alta
## 21         Moderada
## 22             Alta
## 23             Alta
## 24         Moderada
## 25         Moderada
## 26         Moderada
## 27         Moderada
## 28         Moderada
## 29         Moderada
## 30         Moderada
## 31         Moderada
## 32         Moderada
## 33             Alta
## 34             Alta
## 35         Moderada
## 36         Moderada
## 37         Moderada
## 38             Alta
## 39         Moderada
## 40         Moderada
## 41         Moderada
## 42            Baixa
## 43         Moderada
## 44         Moderada
## 45             Alta
## 46         Moderada
## 47             Alta
## 48         Moderada
## 49             Alta
## 50         Moderada
## 51         Moderada
## 52         Moderada
## 53         Moderada
## 54            Baixa
## 55            Baixa
## 56            Baixa
## 57         Moderada
## 58            Baixa
## 59            Baixa
## 60            Baixa
## 61            Baixa
## 62         Moderada
## 63            Baixa
## 64            Baixa
## 65            Baixa
## 66         Moderada
## 67         Moderada
## 68            Baixa
## 69            Baixa
## 70            Baixa
## 71         Moderada
## 72            Baixa
## 73            Baixa
## 74            Baixa
## 75            Baixa
## 76         Moderada
## 77            Baixa
## 78         Moderada
## 79            Baixa
## 80            Baixa
## 81            Baixa
## 82            Baixa
## 83            Baixa
## 84            Baixa
## 85         Moderada
## 86         Moderada
## 87         Moderada
## 88            Baixa
## 89         Moderada
## 90            Baixa
## 91            Baixa
## 92         Moderada
## 93            Baixa
## 94            Baixa
## 95            Baixa
## 96         Moderada
## 97            Baixa
## 98            Baixa
## 99            Baixa
## 100           Baixa
## 101        Moderada
## 102           Baixa
## 103        Moderada
## 104           Baixa
## 105        Moderada
## 106        Moderada
## 107           Baixa
## 108           Baixa
## 109           Baixa
## 110            Alta
## 111        Moderada
## 112           Baixa
## 113        Moderada
## 114           Baixa
## 115           Baixa
## 116        Moderada
## 117        Moderada
## 118            Alta
## 119           Baixa
## 120           Baixa
## 121        Moderada
## 122           Baixa
## 123           Baixa
## 124           Baixa
## 125        Moderada
## 126        Moderada
## 127           Baixa
## 128        Moderada
## 129           Baixa
## 130        Moderada
## 131           Baixa
## 132            Alta
## 133           Baixa
## 134           Baixa
## 135           Baixa
## 136        Moderada
## 137        Moderada
## 138        Moderada
## 139        Moderada
## 140        Moderada
## 141        Moderada
## 142        Moderada
## 143           Baixa
## 144        Moderada
## 145        Moderada
## 146        Moderada
## 147           Baixa
## 148        Moderada
## 149        Moderada
## 150        Moderada

5.4.3 Mais de um tipo de condiconal não binária

Usando a função mutate() para criar uma variável condicional, baseada na massa, através da função case_when(). Nesse caso, criando duas novas variáveis condicionais.

iris %>% 
  mutate(`Tipo de Largura`=case_when(Sepal.Width<3~"Baixa",
                                     Sepal.Width>=3 & Sepal.Width<=3.5~"Moderada",
                                     Sepal.Width>3.5~"Alta"),
         `Tipo de Comprimento`=case_when(Sepal.Length<5~"Baixa",
                                     Sepal.Length>=5 & Sepal.Length<=6~"Moderada",
                                     Sepal.Length>6~"Alta")
         )
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Nova_Variável
## 1            5.1         3.5          1.4         0.2     setosa           8.6
## 2            4.9         3.0          1.4         0.2     setosa           7.9
## 3            4.7         3.2          1.3         0.2     setosa           7.9
## 4            4.6         3.1          1.5         0.2     setosa           7.7
## 5            5.0         3.6          1.4         0.2     setosa           8.6
## 6            5.4         3.9          1.7         0.4     setosa           9.3
## 7            4.6         3.4          1.4         0.3     setosa           8.0
## 8            5.0         3.4          1.5         0.2     setosa           8.4
## 9            4.4         2.9          1.4         0.2     setosa           7.3
## 10           4.9         3.1          1.5         0.1     setosa           8.0
## 11           5.4         3.7          1.5         0.2     setosa           9.1
## 12           4.8         3.4          1.6         0.2     setosa           8.2
## 13           4.8         3.0          1.4         0.1     setosa           7.8
## 14           4.3         3.0          1.1         0.1     setosa           7.3
## 15           5.8         4.0          1.2         0.2     setosa           9.8
## 16           5.7         4.4          1.5         0.4     setosa          10.1
## 17           5.4         3.9          1.3         0.4     setosa           9.3
## 18           5.1         3.5          1.4         0.3     setosa           8.6
## 19           5.7         3.8          1.7         0.3     setosa           9.5
## 20           5.1         3.8          1.5         0.3     setosa           8.9
## 21           5.4         3.4          1.7         0.2     setosa           8.8
## 22           5.1         3.7          1.5         0.4     setosa           8.8
## 23           4.6         3.6          1.0         0.2     setosa           8.2
## 24           5.1         3.3          1.7         0.5     setosa           8.4
## 25           4.8         3.4          1.9         0.2     setosa           8.2
## 26           5.0         3.0          1.6         0.2     setosa           8.0
## 27           5.0         3.4          1.6         0.4     setosa           8.4
## 28           5.2         3.5          1.5         0.2     setosa           8.7
## 29           5.2         3.4          1.4         0.2     setosa           8.6
## 30           4.7         3.2          1.6         0.2     setosa           7.9
## 31           4.8         3.1          1.6         0.2     setosa           7.9
## 32           5.4         3.4          1.5         0.4     setosa           8.8
## 33           5.2         4.1          1.5         0.1     setosa           9.3
## 34           5.5         4.2          1.4         0.2     setosa           9.7
## 35           4.9         3.1          1.5         0.2     setosa           8.0
## 36           5.0         3.2          1.2         0.2     setosa           8.2
## 37           5.5         3.5          1.3         0.2     setosa           9.0
## 38           4.9         3.6          1.4         0.1     setosa           8.5
## 39           4.4         3.0          1.3         0.2     setosa           7.4
## 40           5.1         3.4          1.5         0.2     setosa           8.5
## 41           5.0         3.5          1.3         0.3     setosa           8.5
## 42           4.5         2.3          1.3         0.3     setosa           6.8
## 43           4.4         3.2          1.3         0.2     setosa           7.6
## 44           5.0         3.5          1.6         0.6     setosa           8.5
## 45           5.1         3.8          1.9         0.4     setosa           8.9
## 46           4.8         3.0          1.4         0.3     setosa           7.8
## 47           5.1         3.8          1.6         0.2     setosa           8.9
## 48           4.6         3.2          1.4         0.2     setosa           7.8
## 49           5.3         3.7          1.5         0.2     setosa           9.0
## 50           5.0         3.3          1.4         0.2     setosa           8.3
## 51           7.0         3.2          4.7         1.4 versicolor          10.2
## 52           6.4         3.2          4.5         1.5 versicolor           9.6
## 53           6.9         3.1          4.9         1.5 versicolor          10.0
## 54           5.5         2.3          4.0         1.3 versicolor           7.8
## 55           6.5         2.8          4.6         1.5 versicolor           9.3
## 56           5.7         2.8          4.5         1.3 versicolor           8.5
## 57           6.3         3.3          4.7         1.6 versicolor           9.6
## 58           4.9         2.4          3.3         1.0 versicolor           7.3
## 59           6.6         2.9          4.6         1.3 versicolor           9.5
## 60           5.2         2.7          3.9         1.4 versicolor           7.9
## 61           5.0         2.0          3.5         1.0 versicolor           7.0
## 62           5.9         3.0          4.2         1.5 versicolor           8.9
## 63           6.0         2.2          4.0         1.0 versicolor           8.2
## 64           6.1         2.9          4.7         1.4 versicolor           9.0
## 65           5.6         2.9          3.6         1.3 versicolor           8.5
## 66           6.7         3.1          4.4         1.4 versicolor           9.8
## 67           5.6         3.0          4.5         1.5 versicolor           8.6
## 68           5.8         2.7          4.1         1.0 versicolor           8.5
## 69           6.2         2.2          4.5         1.5 versicolor           8.4
## 70           5.6         2.5          3.9         1.1 versicolor           8.1
## 71           5.9         3.2          4.8         1.8 versicolor           9.1
## 72           6.1         2.8          4.0         1.3 versicolor           8.9
## 73           6.3         2.5          4.9         1.5 versicolor           8.8
## 74           6.1         2.8          4.7         1.2 versicolor           8.9
## 75           6.4         2.9          4.3         1.3 versicolor           9.3
## 76           6.6         3.0          4.4         1.4 versicolor           9.6
## 77           6.8         2.8          4.8         1.4 versicolor           9.6
## 78           6.7         3.0          5.0         1.7 versicolor           9.7
## 79           6.0         2.9          4.5         1.5 versicolor           8.9
## 80           5.7         2.6          3.5         1.0 versicolor           8.3
## 81           5.5         2.4          3.8         1.1 versicolor           7.9
## 82           5.5         2.4          3.7         1.0 versicolor           7.9
## 83           5.8         2.7          3.9         1.2 versicolor           8.5
## 84           6.0         2.7          5.1         1.6 versicolor           8.7
## 85           5.4         3.0          4.5         1.5 versicolor           8.4
## 86           6.0         3.4          4.5         1.6 versicolor           9.4
## 87           6.7         3.1          4.7         1.5 versicolor           9.8
## 88           6.3         2.3          4.4         1.3 versicolor           8.6
## 89           5.6         3.0          4.1         1.3 versicolor           8.6
## 90           5.5         2.5          4.0         1.3 versicolor           8.0
## 91           5.5         2.6          4.4         1.2 versicolor           8.1
## 92           6.1         3.0          4.6         1.4 versicolor           9.1
## 93           5.8         2.6          4.0         1.2 versicolor           8.4
## 94           5.0         2.3          3.3         1.0 versicolor           7.3
## 95           5.6         2.7          4.2         1.3 versicolor           8.3
## 96           5.7         3.0          4.2         1.2 versicolor           8.7
## 97           5.7         2.9          4.2         1.3 versicolor           8.6
## 98           6.2         2.9          4.3         1.3 versicolor           9.1
## 99           5.1         2.5          3.0         1.1 versicolor           7.6
## 100          5.7         2.8          4.1         1.3 versicolor           8.5
## 101          6.3         3.3          6.0         2.5  virginica           9.6
## 102          5.8         2.7          5.1         1.9  virginica           8.5
## 103          7.1         3.0          5.9         2.1  virginica          10.1
## 104          6.3         2.9          5.6         1.8  virginica           9.2
## 105          6.5         3.0          5.8         2.2  virginica           9.5
## 106          7.6         3.0          6.6         2.1  virginica          10.6
## 107          4.9         2.5          4.5         1.7  virginica           7.4
## 108          7.3         2.9          6.3         1.8  virginica          10.2
## 109          6.7         2.5          5.8         1.8  virginica           9.2
## 110          7.2         3.6          6.1         2.5  virginica          10.8
## 111          6.5         3.2          5.1         2.0  virginica           9.7
## 112          6.4         2.7          5.3         1.9  virginica           9.1
## 113          6.8         3.0          5.5         2.1  virginica           9.8
## 114          5.7         2.5          5.0         2.0  virginica           8.2
## 115          5.8         2.8          5.1         2.4  virginica           8.6
## 116          6.4         3.2          5.3         2.3  virginica           9.6
## 117          6.5         3.0          5.5         1.8  virginica           9.5
## 118          7.7         3.8          6.7         2.2  virginica          11.5
## 119          7.7         2.6          6.9         2.3  virginica          10.3
## 120          6.0         2.2          5.0         1.5  virginica           8.2
## 121          6.9         3.2          5.7         2.3  virginica          10.1
## 122          5.6         2.8          4.9         2.0  virginica           8.4
## 123          7.7         2.8          6.7         2.0  virginica          10.5
## 124          6.3         2.7          4.9         1.8  virginica           9.0
## 125          6.7         3.3          5.7         2.1  virginica          10.0
## 126          7.2         3.2          6.0         1.8  virginica          10.4
## 127          6.2         2.8          4.8         1.8  virginica           9.0
## 128          6.1         3.0          4.9         1.8  virginica           9.1
## 129          6.4         2.8          5.6         2.1  virginica           9.2
## 130          7.2         3.0          5.8         1.6  virginica          10.2
## 131          7.4         2.8          6.1         1.9  virginica          10.2
## 132          7.9         3.8          6.4         2.0  virginica          11.7
## 133          6.4         2.8          5.6         2.2  virginica           9.2
## 134          6.3         2.8          5.1         1.5  virginica           9.1
## 135          6.1         2.6          5.6         1.4  virginica           8.7
## 136          7.7         3.0          6.1         2.3  virginica          10.7
## 137          6.3         3.4          5.6         2.4  virginica           9.7
## 138          6.4         3.1          5.5         1.8  virginica           9.5
## 139          6.0         3.0          4.8         1.8  virginica           9.0
## 140          6.9         3.1          5.4         2.1  virginica          10.0
## 141          6.7         3.1          5.6         2.4  virginica           9.8
## 142          6.9         3.1          5.1         2.3  virginica          10.0
## 143          5.8         2.7          5.1         1.9  virginica           8.5
## 144          6.8         3.2          5.9         2.3  virginica          10.0
## 145          6.7         3.3          5.7         2.5  virginica          10.0
## 146          6.7         3.0          5.2         2.3  virginica           9.7
## 147          6.3         2.5          5.0         1.9  virginica           8.8
## 148          6.5         3.0          5.2         2.0  virginica           9.5
## 149          6.2         3.4          5.4         2.3  virginica           9.6
## 150          5.9         3.0          5.1         1.8  virginica           8.9
##     Tipo de Largura Tipo de Comprimento
## 1          Moderada            Moderada
## 2          Moderada               Baixa
## 3          Moderada               Baixa
## 4          Moderada               Baixa
## 5              Alta            Moderada
## 6              Alta            Moderada
## 7          Moderada               Baixa
## 8          Moderada            Moderada
## 9             Baixa               Baixa
## 10         Moderada               Baixa
## 11             Alta            Moderada
## 12         Moderada               Baixa
## 13         Moderada               Baixa
## 14         Moderada               Baixa
## 15             Alta            Moderada
## 16             Alta            Moderada
## 17             Alta            Moderada
## 18         Moderada            Moderada
## 19             Alta            Moderada
## 20             Alta            Moderada
## 21         Moderada            Moderada
## 22             Alta            Moderada
## 23             Alta               Baixa
## 24         Moderada            Moderada
## 25         Moderada               Baixa
## 26         Moderada            Moderada
## 27         Moderada            Moderada
## 28         Moderada            Moderada
## 29         Moderada            Moderada
## 30         Moderada               Baixa
## 31         Moderada               Baixa
## 32         Moderada            Moderada
## 33             Alta            Moderada
## 34             Alta            Moderada
## 35         Moderada               Baixa
## 36         Moderada            Moderada
## 37         Moderada            Moderada
## 38             Alta               Baixa
## 39         Moderada               Baixa
## 40         Moderada            Moderada
## 41         Moderada            Moderada
## 42            Baixa               Baixa
## 43         Moderada               Baixa
## 44         Moderada            Moderada
## 45             Alta            Moderada
## 46         Moderada               Baixa
## 47             Alta            Moderada
## 48         Moderada               Baixa
## 49             Alta            Moderada
## 50         Moderada            Moderada
## 51         Moderada                Alta
## 52         Moderada                Alta
## 53         Moderada                Alta
## 54            Baixa            Moderada
## 55            Baixa                Alta
## 56            Baixa            Moderada
## 57         Moderada                Alta
## 58            Baixa               Baixa
## 59            Baixa                Alta
## 60            Baixa            Moderada
## 61            Baixa            Moderada
## 62         Moderada            Moderada
## 63            Baixa            Moderada
## 64            Baixa                Alta
## 65            Baixa            Moderada
## 66         Moderada                Alta
## 67         Moderada            Moderada
## 68            Baixa            Moderada
## 69            Baixa                Alta
## 70            Baixa            Moderada
## 71         Moderada            Moderada
## 72            Baixa                Alta
## 73            Baixa                Alta
## 74            Baixa                Alta
## 75            Baixa                Alta
## 76         Moderada                Alta
## 77            Baixa                Alta
## 78         Moderada                Alta
## 79            Baixa            Moderada
## 80            Baixa            Moderada
## 81            Baixa            Moderada
## 82            Baixa            Moderada
## 83            Baixa            Moderada
## 84            Baixa            Moderada
## 85         Moderada            Moderada
## 86         Moderada            Moderada
## 87         Moderada                Alta
## 88            Baixa                Alta
## 89         Moderada            Moderada
## 90            Baixa            Moderada
## 91            Baixa            Moderada
## 92         Moderada                Alta
## 93            Baixa            Moderada
## 94            Baixa            Moderada
## 95            Baixa            Moderada
## 96         Moderada            Moderada
## 97            Baixa            Moderada
## 98            Baixa                Alta
## 99            Baixa            Moderada
## 100           Baixa            Moderada
## 101        Moderada                Alta
## 102           Baixa            Moderada
## 103        Moderada                Alta
## 104           Baixa                Alta
## 105        Moderada                Alta
## 106        Moderada                Alta
## 107           Baixa               Baixa
## 108           Baixa                Alta
## 109           Baixa                Alta
## 110            Alta                Alta
## 111        Moderada                Alta
## 112           Baixa                Alta
## 113        Moderada                Alta
## 114           Baixa            Moderada
## 115           Baixa            Moderada
## 116        Moderada                Alta
## 117        Moderada                Alta
## 118            Alta                Alta
## 119           Baixa                Alta
## 120           Baixa            Moderada
## 121        Moderada                Alta
## 122           Baixa            Moderada
## 123           Baixa                Alta
## 124           Baixa                Alta
## 125        Moderada                Alta
## 126        Moderada                Alta
## 127           Baixa                Alta
## 128        Moderada                Alta
## 129           Baixa                Alta
## 130        Moderada                Alta
## 131           Baixa                Alta
## 132            Alta                Alta
## 133           Baixa                Alta
## 134           Baixa                Alta
## 135           Baixa                Alta
## 136        Moderada                Alta
## 137        Moderada                Alta
## 138        Moderada                Alta
## 139        Moderada            Moderada
## 140        Moderada                Alta
## 141        Moderada                Alta
## 142        Moderada                Alta
## 143           Baixa            Moderada
## 144        Moderada                Alta
## 145        Moderada                Alta
## 146        Moderada                Alta
## 147           Baixa                Alta
## 148        Moderada                Alta
## 149        Moderada                Alta
## 150        Moderada            Moderada

5.5 Transformando conjunto de colunas em apenas duas (longging)

Esse é o tipo de situação onde Mais de uma variável precisam se tornar duas: uma com os nomes das antigas variáveis e outra com os seus valores, como mencionado logo no incício desse RPubs. Para isso, usa-se a função pivot_longer(), do pacote tidyr. Com o pivot_longer(), é necessário indicar a variável para onde os nomes das variáveis irão (names_to=), a variável para onde os valores das variáveis irão (values_to=) e quais as colunas selecionadas (cols=).

5.5.1 Baseado no começo do nome das colunas

Aqui, será Trasformadas as colunas que os nomes começam em “Sepal” para criar uma coluna unificada com esses valores e uma nova coluna com os nomes das estruturas relacionadas.

iris_nova_sépala<-iris %>% 
  pivot_longer(names_to = "Tipo de variável da sépala",
               values_to = "valor",
               cols=starts_with("Sepal")) 

iris_nova_sépala # Conferindo os dados
## # A tibble: 300 × 6
##    Petal.Length Petal.Width Species Nova_Variável Tipo de variável da sé…¹ valor
##           <dbl>       <dbl> <fct>           <dbl> <chr>                    <dbl>
##  1          1.4         0.2 setosa            8.6 Sepal.Length               5.1
##  2          1.4         0.2 setosa            8.6 Sepal.Width                3.5
##  3          1.4         0.2 setosa            7.9 Sepal.Length               4.9
##  4          1.4         0.2 setosa            7.9 Sepal.Width                3  
##  5          1.3         0.2 setosa            7.9 Sepal.Length               4.7
##  6          1.3         0.2 setosa            7.9 Sepal.Width                3.2
##  7          1.5         0.2 setosa            7.7 Sepal.Length               4.6
##  8          1.5         0.2 setosa            7.7 Sepal.Width                3.1
##  9          1.4         0.2 setosa            8.6 Sepal.Length               5  
## 10          1.4         0.2 setosa            8.6 Sepal.Width                3.6
## # … with 290 more rows, and abbreviated variable name
## #   ¹​`Tipo de variável da sépala`

5.5.2 Baseado no fim do nome das colunas

Aqui, será trasformado as colunas que os nomes terminam em “Length” para criar uma coluna unificada com esses valores e uma nova coluna com os nomes das estruturas relacionadas.

iris_nova_comprimento<-iris %>% 
  pivot_longer(names_to = "Estrutura",
               values_to = "Comprimento",
               cols=ends_with("Length")) 

iris_nova_comprimento # Conferindo os dados
## # A tibble: 300 × 6
##    Sepal.Width Petal.Width Species Nova_Variável Estrutura    Comprimento
##          <dbl>       <dbl> <fct>           <dbl> <chr>              <dbl>
##  1         3.5         0.2 setosa            8.6 Sepal.Length         5.1
##  2         3.5         0.2 setosa            8.6 Petal.Length         1.4
##  3         3           0.2 setosa            7.9 Sepal.Length         4.9
##  4         3           0.2 setosa            7.9 Petal.Length         1.4
##  5         3.2         0.2 setosa            7.9 Sepal.Length         4.7
##  6         3.2         0.2 setosa            7.9 Petal.Length         1.3
##  7         3.1         0.2 setosa            7.7 Sepal.Length         4.6
##  8         3.1         0.2 setosa            7.7 Petal.Length         1.5
##  9         3.6         0.2 setosa            8.6 Sepal.Length         5  
## 10         3.6         0.2 setosa            8.6 Petal.Length         1.4
## # … with 290 more rows

5.5.3 Baseado em escolhas de colunas “aletórias”

Selecionando as variáveis de alturea e massa para criar novas colunas, uma contendo o tipo de variável (Variável) e outra os valores (Valor).

starwars_novas_vars<-starwars %>% 
  pivot_longer(names_to = "Variável",
               values_to = "Valor",
               cols=c(height,mass)) 

starwars_novas_vars[13:14] # Conferindo os dados
## # A tibble: 174 × 2
##    Variável Valor
##    <chr>    <dbl>
##  1 height     172
##  2 mass        77
##  3 height     167
##  4 mass        75
##  5 height      96
##  6 mass        32
##  7 height     202
##  8 mass       136
##  9 height     150
## 10 mass        49
## # … with 164 more rows

5.6 Transformando duas colunas em um conjunto (Widering)

Aqui é exatamente o oposto do pivot_longer(). Usando a função pivot_wider(), se informa a variável de onde os nomes das novas variáveis virão (names_from=) e a variável de onde os valores das novas variáveis virão (values_from=).

5.6.1 Retransforando colunas feitas no pivot_longer()

Usando o dataset starwars_novas_vars feito previamente, as colunas Variável e Valor que foram criadas voltaram a ser as colunas height e mass, separadamente.

starwars_refeita<-starwars_novas_vars %>% 
  pivot_wider(names_from = Variável,
              values_from = Valor)

starwars_refeita[13:14] # conferindo os dados
## # A tibble: 87 × 2
##    height  mass
##     <dbl> <dbl>
##  1    172    77
##  2    167    75
##  3     96    32
##  4    202   136
##  5    150    49
##  6    178   120
##  7    165    75
##  8     97    32
##  9    183    84
## 10    182    77
## # … with 77 more rows

5.6.2 Transformando duas colunas em mais de duas

Também é possível tranformar duas colunas em mais de duas, através de adicionar mais de uma coluna no values_from=.

starwars_nova_wider<-starwars %>% 
  pivot_wider(names_from = gender,
              values_from = c(mass,height)) 

starwars_nova_wider[12:17] # conferindo os dados
## # A tibble: 87 × 6
##    mass_masculine mass_feminine mass_NA height_masculine height_feminine heigh…¹
##             <dbl>         <dbl>   <dbl>            <int>           <int>   <int>
##  1             77            NA      NA              172              NA      NA
##  2             75            NA      NA              167              NA      NA
##  3             32            NA      NA               96              NA      NA
##  4            136            NA      NA              202              NA      NA
##  5             NA            49      NA               NA             150      NA
##  6            120            NA      NA              178              NA      NA
##  7             NA            75      NA               NA             165      NA
##  8             32            NA      NA               97              NA      NA
##  9             84            NA      NA              183              NA      NA
## 10             77            NA      NA              182              NA      NA
## # … with 77 more rows, and abbreviated variable name ¹​height_NA

5.7 Juntando colunas pelos seus valores

Nessas situações, o que se deseja é que duas variáveis se tornem uma só, mas ao contrário do pivot_longer(), o nº de linhas do dataset se mantém, onde os valores de uma variável se mantém paralelos uns aos outros, ao invés de um abaixo na sequÊncia do outro. Para isso, usa-se a função unite(), do pacote tidyr, indicando qual será a nova variável fruto da unificação (col=), quais as variáveis que serão unidas (c()), e o que separará os valores (sep=).

5.7.1 Separando por espaço

Unindo as colunas sex e gender em uma só, com seus valores separados apenas por espaços.

starwars_nova_sexgend<-starwars %>% 
  unite(col="Sex & Gender",
        c(sex,gender),
        sep=" ") 

starwars_nova_sexgend[8] # conferindo os dados
## # A tibble: 87 × 1
##    `Sex & Gender` 
##    <chr>          
##  1 male masculine 
##  2 none masculine 
##  3 none masculine 
##  4 male masculine 
##  5 female feminine
##  6 male masculine 
##  7 female feminine
##  8 none masculine 
##  9 male masculine 
## 10 male masculine 
## # … with 77 more rows

5.7.2 Separando por outros caracteres

Unindo as colunas sex e gender em uma só, com seus valores separados apenas por espaços.

starwars_nova_sexgend<-starwars %>% 
  unite(col="Sex & Gender",
        c(sex,gender),
        sep=" & ") 

starwars_nova_sexgend[8] # conferindo os dados
## # A tibble: 87 × 1
##    `Sex & Gender`   
##    <chr>            
##  1 male & masculine 
##  2 none & masculine 
##  3 none & masculine 
##  4 male & masculine 
##  5 female & feminine
##  6 male & masculine 
##  7 female & feminine
##  8 none & masculine 
##  9 male & masculine 
## 10 male & masculine 
## # … with 77 more rows

5.8 Seprando uma coluna em outras colunas pelos seus valores

Essa operação é exatamente o oposto do unite(). Utilizando a função separate(), do pacote tidyr, separa-se os valores de uma variável em duas, indicando qual variável será separada (col=), em quais variáveis será separada (into=c()), e o critério dos valores que serão separados (sep=" "). Utilizando o dataset starwars_nova_sexgend feito anteriromente, a coluna sex & gender foi redividida em duas colunas: sex e gender, onde o ponto de separação foi também o " & ".

starwars_refeita_sexgend<-starwars_nova_sexgend %>% 
  separate(col=`Sex & Gender`,
           into=c("sex","gender"),
           sep=" & ")  

starwars_refeita_sexgend[8:9] # conferindo os dados
## # A tibble: 87 × 2
##    sex    gender   
##    <chr>  <chr>    
##  1 male   masculine
##  2 none   masculine
##  3 none   masculine
##  4 male   masculine
##  5 female feminine 
##  6 male   masculine
##  7 female feminine 
##  8 none   masculine
##  9 male   masculine
## 10 male   masculine
## # … with 77 more rows

6 Alterando as informações dos dados de um dataset

Outra boa habilidade para quem trabalha com Ciência de Dados é alterar informações dentro de um dataset. Isso pode ocorrer pois o dataset não foi construído de forma adequada, foi corrompido ou porque houveram alterações no intuíto da pesquisa/projeto. Não faltam sitações onde são necessárias estas habilidades. É possível fazer isso com uma série de comandos, dependendo do intúito.

6.1 Pacotes exigidos

library(tidyverse)

6.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

6.3 Método “padrão”

6.3.1 Substituindo um valor por vez

De forma manual, é possível substituir os valores de um tipo de dado por outra informação, uma por vez. Para isso, é selecionado com dataset$variável[dataset$variável=="valor que será substituido"]<-"informação que substituirá". Aqui, os dados que estiverem como “black” serão substituídos por “preto”.

starwars$hair_color[starwars$hair_color=="black"]<-"preto" # substituindo a cor de cabelo "black" por "preto"

starwars$hair_color # Conferindo os dados
##  [1] "blond"         NA              NA              "none"         
##  [5] "brown"         "brown, grey"   "brown"         NA             
##  [9] "preto"         "auburn, white" "blond"         "auburn, grey" 
## [13] "brown"         "brown"         NA              NA             
## [17] "brown"         "brown"         "white"         "grey"         
## [21] "preto"         "none"          "none"          "preto"        
## [25] "none"          "none"          "auburn"        "brown"        
## [29] "brown"         "none"          "brown"         "none"         
## [33] "blond"         "none"          "none"          "none"         
## [37] "brown"         "preto"         "none"          "preto"        
## [41] "preto"         "none"          "none"          "none"         
## [45] "none"          "none"          "none"          "none"         
## [49] "white"         "none"          "preto"         "none"         
## [53] "none"          "none"          "none"          "none"         
## [57] "preto"         "brown"         "brown"         "none"         
## [61] "preto"         "preto"         "brown"         "white"        
## [65] "preto"         "preto"         "blonde"        "none"         
## [69] "none"          "none"          "white"         "none"         
## [73] "none"          "none"          "none"          "none"         
## [77] "none"          "brown"         "brown"         "none"         
## [81] "none"          "preto"         "brown"         "brown"        
## [85] "none"          "unknown"       "brown"

6.3.2 Método “padrão” para um dataset completo

Assim como em um vetor, é possível fazer no dataset. Aqui, substituindo todos os valores 5 por “cinco”.

iris[iris>=5]<-"cinco" # substituido 5 por "cinco"

iris # conferindo os dados
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          cinco         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5          cinco         3.6          1.4         0.2     setosa
## 6          cinco         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8          cinco         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11         cinco         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15         cinco         4.0          1.2         0.2     setosa
## 16         cinco         4.4          1.5         0.4     setosa
## 17         cinco         3.9          1.3         0.4     setosa
## 18         cinco         3.5          1.4         0.3     setosa
## 19         cinco         3.8          1.7         0.3     setosa
## 20         cinco         3.8          1.5         0.3     setosa
## 21         cinco         3.4          1.7         0.2     setosa
## 22         cinco         3.7          1.5         0.4     setosa
## 23           4.6         3.6            1         0.2     setosa
## 24         cinco         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26         cinco         3.0          1.6         0.2     setosa
## 27         cinco         3.4          1.6         0.4     setosa
## 28         cinco         3.5          1.5         0.2     setosa
## 29         cinco         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32         cinco         3.4          1.5         0.4     setosa
## 33         cinco         4.1          1.5         0.1     setosa
## 34         cinco         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36         cinco         3.2          1.2         0.2     setosa
## 37         cinco         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40         cinco         3.4          1.5         0.2     setosa
## 41         cinco         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44         cinco         3.5          1.6         0.6     setosa
## 45         cinco         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47         cinco         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49         cinco         3.7          1.5         0.2     setosa
## 50         cinco         3.3          1.4         0.2     setosa
## 51         cinco         3.2          4.7         1.4 versicolor
## 52         cinco         3.2          4.5         1.5 versicolor
## 53         cinco         3.1          4.9         1.5 versicolor
## 54         cinco         2.3            4         1.3 versicolor
## 55         cinco         2.8          4.6         1.5 versicolor
## 56         cinco         2.8          4.5         1.3 versicolor
## 57         cinco         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59         cinco         2.9          4.6         1.3 versicolor
## 60         cinco         2.7          3.9         1.4 versicolor
## 61         cinco         2.0          3.5         1.0 versicolor
## 62         cinco         3.0          4.2         1.5 versicolor
## 63         cinco         2.2            4         1.0 versicolor
## 64         cinco         2.9          4.7         1.4 versicolor
## 65         cinco         2.9          3.6         1.3 versicolor
## 66         cinco         3.1          4.4         1.4 versicolor
## 67         cinco         3.0          4.5         1.5 versicolor
## 68         cinco         2.7          4.1         1.0 versicolor
## 69         cinco         2.2          4.5         1.5 versicolor
## 70         cinco         2.5          3.9         1.1 versicolor
## 71         cinco         3.2          4.8         1.8 versicolor
## 72         cinco         2.8            4         1.3 versicolor
## 73         cinco         2.5          4.9         1.5 versicolor
## 74         cinco         2.8          4.7         1.2 versicolor
## 75         cinco         2.9          4.3         1.3 versicolor
## 76         cinco         3.0          4.4         1.4 versicolor
## 77         cinco         2.8          4.8         1.4 versicolor
## 78         cinco         3.0        cinco         1.7 versicolor
## 79         cinco         2.9          4.5         1.5 versicolor
## 80         cinco         2.6          3.5         1.0 versicolor
## 81         cinco         2.4          3.8         1.1 versicolor
## 82         cinco         2.4          3.7         1.0 versicolor
## 83         cinco         2.7          3.9         1.2 versicolor
## 84         cinco         2.7        cinco         1.6 versicolor
## 85         cinco         3.0          4.5         1.5 versicolor
## 86         cinco         3.4          4.5         1.6 versicolor
## 87         cinco         3.1          4.7         1.5 versicolor
## 88         cinco         2.3          4.4         1.3 versicolor
## 89         cinco         3.0          4.1         1.3 versicolor
## 90         cinco         2.5            4         1.3 versicolor
## 91         cinco         2.6          4.4         1.2 versicolor
## 92         cinco         3.0          4.6         1.4 versicolor
## 93         cinco         2.6            4         1.2 versicolor
## 94         cinco         2.3          3.3         1.0 versicolor
## 95         cinco         2.7          4.2         1.3 versicolor
## 96         cinco         3.0          4.2         1.2 versicolor
## 97         cinco         2.9          4.2         1.3 versicolor
## 98         cinco         2.9          4.3         1.3 versicolor
## 99         cinco         2.5            3         1.1 versicolor
## 100        cinco         2.8          4.1         1.3 versicolor
## 101        cinco         3.3        cinco         2.5  virginica
## 102        cinco         2.7        cinco         1.9  virginica
## 103        cinco         3.0        cinco         2.1  virginica
## 104        cinco         2.9        cinco         1.8  virginica
## 105        cinco         3.0        cinco         2.2  virginica
## 106        cinco         3.0        cinco         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108        cinco         2.9        cinco         1.8  virginica
## 109        cinco         2.5        cinco         1.8  virginica
## 110        cinco         3.6        cinco         2.5  virginica
## 111        cinco         3.2        cinco         2.0  virginica
## 112        cinco         2.7        cinco         1.9  virginica
## 113        cinco         3.0        cinco         2.1  virginica
## 114        cinco         2.5        cinco         2.0  virginica
## 115        cinco         2.8        cinco         2.4  virginica
## 116        cinco         3.2        cinco         2.3  virginica
## 117        cinco         3.0        cinco         1.8  virginica
## 118        cinco         3.8        cinco         2.2  virginica
## 119        cinco         2.6        cinco         2.3  virginica
## 120        cinco         2.2        cinco         1.5  virginica
## 121        cinco         3.2        cinco         2.3  virginica
## 122        cinco         2.8          4.9         2.0  virginica
## 123        cinco         2.8        cinco         2.0  virginica
## 124        cinco         2.7          4.9         1.8  virginica
## 125        cinco         3.3        cinco         2.1  virginica
## 126        cinco         3.2        cinco         1.8  virginica
## 127        cinco         2.8          4.8         1.8  virginica
## 128        cinco         3.0          4.9         1.8  virginica
## 129        cinco         2.8        cinco         2.1  virginica
## 130        cinco         3.0        cinco         1.6  virginica
## 131        cinco         2.8        cinco         1.9  virginica
## 132        cinco         3.8        cinco         2.0  virginica
## 133        cinco         2.8        cinco         2.2  virginica
## 134        cinco         2.8        cinco         1.5  virginica
## 135        cinco         2.6        cinco         1.4  virginica
## 136        cinco         3.0        cinco         2.3  virginica
## 137        cinco         3.4        cinco         2.4  virginica
## 138        cinco         3.1        cinco         1.8  virginica
## 139        cinco         3.0          4.8         1.8  virginica
## 140        cinco         3.1        cinco         2.1  virginica
## 141        cinco         3.1        cinco         2.4  virginica
## 142        cinco         3.1        cinco         2.3  virginica
## 143        cinco         2.7        cinco         1.9  virginica
## 144        cinco         3.2        cinco         2.3  virginica
## 145        cinco         3.3        cinco         2.5  virginica
## 146        cinco         3.0        cinco         2.3  virginica
## 147        cinco         2.5        cinco         1.9  virginica
## 148        cinco         3.0        cinco         2.0  virginica
## 149        cinco         3.4        cinco         2.3  virginica
## 150        cinco         3.0        cinco         1.8  virginica

6.3.3 Substituindo mais de um valor por vez

Também é possível fazer essa substituição com mais de um tipo de valor, sendo esse conjunto substituido por um novo valor. Aqui, os valores entre 2 e 3 e entre 5 e 6 serão substituídos por “é o exemplo”.

data("iris") # recriando o dataset para o original

iris[iris==2:3 | iris==5:6]<-"é o exemplo" # substituindo todos os valores entre 4 e 5 e 2 e 3 por "é o exemplo"

iris # conferindo os dados
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9 é o exemplo          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5    é o exemplo         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8              5         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8           3          1.4         0.1     setosa
## 14           4.3 é o exemplo          1.1         0.1     setosa
## 15           5.8           4          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6            1         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26             5 é o exemplo          1.6         0.2     setosa
## 27   é o exemplo         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36             5         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4           3          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41   é o exemplo         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44             5         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8 é o exemplo          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50             5         3.3          1.4         0.2     setosa
## 51             7         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3            4         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3           1 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61   é o exemplo é o exemplo          3.5           1 versicolor
## 62           5.9 é o exemplo          4.2         1.5 versicolor
## 63             6         2.2            4           1 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6           3          4.5         1.5 versicolor
## 68           5.8         2.7          4.1           1 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8            4         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6 é o exemplo          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7 é o exemplo            5         1.7 versicolor
## 79             6         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5           1 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7           1 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84   é o exemplo         2.7          5.1         1.6 versicolor
## 85           5.4           3          4.5         1.5 versicolor
## 86   é o exemplo         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6           3          4.1         1.3 versicolor
## 90           5.5         2.5            4         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1 é o exemplo          4.6         1.4 versicolor
## 93           5.8         2.6            4         1.2 versicolor
## 94             5         2.3          3.3           1 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7 é o exemplo          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5            3         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3            6         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1           3          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5           3          5.8         2.2  virginica
## 106          7.6 é o exemplo          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1 é o exemplo  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8           3          5.5         2.1  virginica
## 114          5.7         2.5            5           2  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5           3          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120  é o exemplo         2.2            5         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9           2  virginica
## 123          7.7         2.8          6.7 é o exemplo  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2  é o exemplo         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1 é o exemplo          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2 é o exemplo          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4           2  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7 é o exemplo          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139            6           3          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7 é o exemplo          5.2         2.3  virginica
## 147          6.3         2.5  é o exemplo         1.9  virginica
## 148          6.5 é o exemplo          5.2           2  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9 é o exemplo          5.1         1.8  virginica

6.4 Utilizando o replace()

O replace() é uma função do pacote base, que substitui valores de um dataset. Ele faz exatamente o que os outras fazem, de uma forma mais simples.

6.4.1 Substituindo em todo o dataset

starwars %>% 
  replace(starwars=="light",values="claro")
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   claro   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… claro   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   claro   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 preto   claro   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

7 Alterando a ordem dos valores das variáveis de um dataset

Há situações em que os valores das variáveis não estão na ordem desejada, seja ela crescente ou decrescentes, ou alfabética, seja de A-Z ou de z-A. Existem algumas formas de resolver isso, e o pacote dplyr possue algumas dessas ferramentas.

7.1 Pacotes exigidos

library(tidyverse)

7.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

starwars # Visualizando os dados
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

iris # Visualizando os dados
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica

7.3 Reordenar por ordem numérica

7.3.1 ordem crescente

Utilizando a função arrange(), do pacote dplyr, é possível escolher a ordem numérica. O padrão da função é uma ordem crescente, então basta apenas a variável.

iris %>% 
  arrange(Sepal.Length)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            4.3         3.0          1.1         0.1     setosa
## 2            4.4         2.9          1.4         0.2     setosa
## 3            4.4         3.0          1.3         0.2     setosa
## 4            4.4         3.2          1.3         0.2     setosa
## 5            4.5         2.3          1.3         0.3     setosa
## 6            4.6         3.1          1.5         0.2     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            4.6         3.6          1.0         0.2     setosa
## 9            4.6         3.2          1.4         0.2     setosa
## 10           4.7         3.2          1.3         0.2     setosa
## 11           4.7         3.2          1.6         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.8         3.4          1.9         0.2     setosa
## 15           4.8         3.1          1.6         0.2     setosa
## 16           4.8         3.0          1.4         0.3     setosa
## 17           4.9         3.0          1.4         0.2     setosa
## 18           4.9         3.1          1.5         0.1     setosa
## 19           4.9         3.1          1.5         0.2     setosa
## 20           4.9         3.6          1.4         0.1     setosa
## 21           4.9         2.4          3.3         1.0 versicolor
## 22           4.9         2.5          4.5         1.7  virginica
## 23           5.0         3.6          1.4         0.2     setosa
## 24           5.0         3.4          1.5         0.2     setosa
## 25           5.0         3.0          1.6         0.2     setosa
## 26           5.0         3.4          1.6         0.4     setosa
## 27           5.0         3.2          1.2         0.2     setosa
## 28           5.0         3.5          1.3         0.3     setosa
## 29           5.0         3.5          1.6         0.6     setosa
## 30           5.0         3.3          1.4         0.2     setosa
## 31           5.0         2.0          3.5         1.0 versicolor
## 32           5.0         2.3          3.3         1.0 versicolor
## 33           5.1         3.5          1.4         0.2     setosa
## 34           5.1         3.5          1.4         0.3     setosa
## 35           5.1         3.8          1.5         0.3     setosa
## 36           5.1         3.7          1.5         0.4     setosa
## 37           5.1         3.3          1.7         0.5     setosa
## 38           5.1         3.4          1.5         0.2     setosa
## 39           5.1         3.8          1.9         0.4     setosa
## 40           5.1         3.8          1.6         0.2     setosa
## 41           5.1         2.5          3.0         1.1 versicolor
## 42           5.2         3.5          1.5         0.2     setosa
## 43           5.2         3.4          1.4         0.2     setosa
## 44           5.2         4.1          1.5         0.1     setosa
## 45           5.2         2.7          3.9         1.4 versicolor
## 46           5.3         3.7          1.5         0.2     setosa
## 47           5.4         3.9          1.7         0.4     setosa
## 48           5.4         3.7          1.5         0.2     setosa
## 49           5.4         3.9          1.3         0.4     setosa
## 50           5.4         3.4          1.7         0.2     setosa
## 51           5.4         3.4          1.5         0.4     setosa
## 52           5.4         3.0          4.5         1.5 versicolor
## 53           5.5         4.2          1.4         0.2     setosa
## 54           5.5         3.5          1.3         0.2     setosa
## 55           5.5         2.3          4.0         1.3 versicolor
## 56           5.5         2.4          3.8         1.1 versicolor
## 57           5.5         2.4          3.7         1.0 versicolor
## 58           5.5         2.5          4.0         1.3 versicolor
## 59           5.5         2.6          4.4         1.2 versicolor
## 60           5.6         2.9          3.6         1.3 versicolor
## 61           5.6         3.0          4.5         1.5 versicolor
## 62           5.6         2.5          3.9         1.1 versicolor
## 63           5.6         3.0          4.1         1.3 versicolor
## 64           5.6         2.7          4.2         1.3 versicolor
## 65           5.6         2.8          4.9         2.0  virginica
## 66           5.7         4.4          1.5         0.4     setosa
## 67           5.7         3.8          1.7         0.3     setosa
## 68           5.7         2.8          4.5         1.3 versicolor
## 69           5.7         2.6          3.5         1.0 versicolor
## 70           5.7         3.0          4.2         1.2 versicolor
## 71           5.7         2.9          4.2         1.3 versicolor
## 72           5.7         2.8          4.1         1.3 versicolor
## 73           5.7         2.5          5.0         2.0  virginica
## 74           5.8         4.0          1.2         0.2     setosa
## 75           5.8         2.7          4.1         1.0 versicolor
## 76           5.8         2.7          3.9         1.2 versicolor
## 77           5.8         2.6          4.0         1.2 versicolor
## 78           5.8         2.7          5.1         1.9  virginica
## 79           5.8         2.8          5.1         2.4  virginica
## 80           5.8         2.7          5.1         1.9  virginica
## 81           5.9         3.0          4.2         1.5 versicolor
## 82           5.9         3.2          4.8         1.8 versicolor
## 83           5.9         3.0          5.1         1.8  virginica
## 84           6.0         2.2          4.0         1.0 versicolor
## 85           6.0         2.9          4.5         1.5 versicolor
## 86           6.0         2.7          5.1         1.6 versicolor
## 87           6.0         3.4          4.5         1.6 versicolor
## 88           6.0         2.2          5.0         1.5  virginica
## 89           6.0         3.0          4.8         1.8  virginica
## 90           6.1         2.9          4.7         1.4 versicolor
## 91           6.1         2.8          4.0         1.3 versicolor
## 92           6.1         2.8          4.7         1.2 versicolor
## 93           6.1         3.0          4.6         1.4 versicolor
## 94           6.1         3.0          4.9         1.8  virginica
## 95           6.1         2.6          5.6         1.4  virginica
## 96           6.2         2.2          4.5         1.5 versicolor
## 97           6.2         2.9          4.3         1.3 versicolor
## 98           6.2         2.8          4.8         1.8  virginica
## 99           6.2         3.4          5.4         2.3  virginica
## 100          6.3         3.3          4.7         1.6 versicolor
## 101          6.3         2.5          4.9         1.5 versicolor
## 102          6.3         2.3          4.4         1.3 versicolor
## 103          6.3         3.3          6.0         2.5  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.3         2.7          4.9         1.8  virginica
## 106          6.3         2.8          5.1         1.5  virginica
## 107          6.3         3.4          5.6         2.4  virginica
## 108          6.3         2.5          5.0         1.9  virginica
## 109          6.4         3.2          4.5         1.5 versicolor
## 110          6.4         2.9          4.3         1.3 versicolor
## 111          6.4         2.7          5.3         1.9  virginica
## 112          6.4         3.2          5.3         2.3  virginica
## 113          6.4         2.8          5.6         2.1  virginica
## 114          6.4         2.8          5.6         2.2  virginica
## 115          6.4         3.1          5.5         1.8  virginica
## 116          6.5         2.8          4.6         1.5 versicolor
## 117          6.5         3.0          5.8         2.2  virginica
## 118          6.5         3.2          5.1         2.0  virginica
## 119          6.5         3.0          5.5         1.8  virginica
## 120          6.5         3.0          5.2         2.0  virginica
## 121          6.6         2.9          4.6         1.3 versicolor
## 122          6.6         3.0          4.4         1.4 versicolor
## 123          6.7         3.1          4.4         1.4 versicolor
## 124          6.7         3.0          5.0         1.7 versicolor
## 125          6.7         3.1          4.7         1.5 versicolor
## 126          6.7         2.5          5.8         1.8  virginica
## 127          6.7         3.3          5.7         2.1  virginica
## 128          6.7         3.1          5.6         2.4  virginica
## 129          6.7         3.3          5.7         2.5  virginica
## 130          6.7         3.0          5.2         2.3  virginica
## 131          6.8         2.8          4.8         1.4 versicolor
## 132          6.8         3.0          5.5         2.1  virginica
## 133          6.8         3.2          5.9         2.3  virginica
## 134          6.9         3.1          4.9         1.5 versicolor
## 135          6.9         3.2          5.7         2.3  virginica
## 136          6.9         3.1          5.4         2.1  virginica
## 137          6.9         3.1          5.1         2.3  virginica
## 138          7.0         3.2          4.7         1.4 versicolor
## 139          7.1         3.0          5.9         2.1  virginica
## 140          7.2         3.6          6.1         2.5  virginica
## 141          7.2         3.2          6.0         1.8  virginica
## 142          7.2         3.0          5.8         1.6  virginica
## 143          7.3         2.9          6.3         1.8  virginica
## 144          7.4         2.8          6.1         1.9  virginica
## 145          7.6         3.0          6.6         2.1  virginica
## 146          7.7         3.8          6.7         2.2  virginica
## 147          7.7         2.6          6.9         2.3  virginica
## 148          7.7         2.8          6.7         2.0  virginica
## 149          7.7         3.0          6.1         2.3  virginica
## 150          7.9         3.8          6.4         2.0  virginica

7.3.2 Ordem decrescente

Como a ordem crescente é o padrão da função arrange(), usa-se o comando desc() para informar que a ordem é decrescente. Note que a espécie Iris virginica, que anntes estava nas últimas linhas, agora está nas primeiras.

iris %>% 
  arrange(desc(Sepal.Length))
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            7.9         3.8          6.4         2.0  virginica
## 2            7.7         3.8          6.7         2.2  virginica
## 3            7.7         2.6          6.9         2.3  virginica
## 4            7.7         2.8          6.7         2.0  virginica
## 5            7.7         3.0          6.1         2.3  virginica
## 6            7.6         3.0          6.6         2.1  virginica
## 7            7.4         2.8          6.1         1.9  virginica
## 8            7.3         2.9          6.3         1.8  virginica
## 9            7.2         3.6          6.1         2.5  virginica
## 10           7.2         3.2          6.0         1.8  virginica
## 11           7.2         3.0          5.8         1.6  virginica
## 12           7.1         3.0          5.9         2.1  virginica
## 13           7.0         3.2          4.7         1.4 versicolor
## 14           6.9         3.1          4.9         1.5 versicolor
## 15           6.9         3.2          5.7         2.3  virginica
## 16           6.9         3.1          5.4         2.1  virginica
## 17           6.9         3.1          5.1         2.3  virginica
## 18           6.8         2.8          4.8         1.4 versicolor
## 19           6.8         3.0          5.5         2.1  virginica
## 20           6.8         3.2          5.9         2.3  virginica
## 21           6.7         3.1          4.4         1.4 versicolor
## 22           6.7         3.0          5.0         1.7 versicolor
## 23           6.7         3.1          4.7         1.5 versicolor
## 24           6.7         2.5          5.8         1.8  virginica
## 25           6.7         3.3          5.7         2.1  virginica
## 26           6.7         3.1          5.6         2.4  virginica
## 27           6.7         3.3          5.7         2.5  virginica
## 28           6.7         3.0          5.2         2.3  virginica
## 29           6.6         2.9          4.6         1.3 versicolor
## 30           6.6         3.0          4.4         1.4 versicolor
## 31           6.5         2.8          4.6         1.5 versicolor
## 32           6.5         3.0          5.8         2.2  virginica
## 33           6.5         3.2          5.1         2.0  virginica
## 34           6.5         3.0          5.5         1.8  virginica
## 35           6.5         3.0          5.2         2.0  virginica
## 36           6.4         3.2          4.5         1.5 versicolor
## 37           6.4         2.9          4.3         1.3 versicolor
## 38           6.4         2.7          5.3         1.9  virginica
## 39           6.4         3.2          5.3         2.3  virginica
## 40           6.4         2.8          5.6         2.1  virginica
## 41           6.4         2.8          5.6         2.2  virginica
## 42           6.4         3.1          5.5         1.8  virginica
## 43           6.3         3.3          4.7         1.6 versicolor
## 44           6.3         2.5          4.9         1.5 versicolor
## 45           6.3         2.3          4.4         1.3 versicolor
## 46           6.3         3.3          6.0         2.5  virginica
## 47           6.3         2.9          5.6         1.8  virginica
## 48           6.3         2.7          4.9         1.8  virginica
## 49           6.3         2.8          5.1         1.5  virginica
## 50           6.3         3.4          5.6         2.4  virginica
## 51           6.3         2.5          5.0         1.9  virginica
## 52           6.2         2.2          4.5         1.5 versicolor
## 53           6.2         2.9          4.3         1.3 versicolor
## 54           6.2         2.8          4.8         1.8  virginica
## 55           6.2         3.4          5.4         2.3  virginica
## 56           6.1         2.9          4.7         1.4 versicolor
## 57           6.1         2.8          4.0         1.3 versicolor
## 58           6.1         2.8          4.7         1.2 versicolor
## 59           6.1         3.0          4.6         1.4 versicolor
## 60           6.1         3.0          4.9         1.8  virginica
## 61           6.1         2.6          5.6         1.4  virginica
## 62           6.0         2.2          4.0         1.0 versicolor
## 63           6.0         2.9          4.5         1.5 versicolor
## 64           6.0         2.7          5.1         1.6 versicolor
## 65           6.0         3.4          4.5         1.6 versicolor
## 66           6.0         2.2          5.0         1.5  virginica
## 67           6.0         3.0          4.8         1.8  virginica
## 68           5.9         3.0          4.2         1.5 versicolor
## 69           5.9         3.2          4.8         1.8 versicolor
## 70           5.9         3.0          5.1         1.8  virginica
## 71           5.8         4.0          1.2         0.2     setosa
## 72           5.8         2.7          4.1         1.0 versicolor
## 73           5.8         2.7          3.9         1.2 versicolor
## 74           5.8         2.6          4.0         1.2 versicolor
## 75           5.8         2.7          5.1         1.9  virginica
## 76           5.8         2.8          5.1         2.4  virginica
## 77           5.8         2.7          5.1         1.9  virginica
## 78           5.7         4.4          1.5         0.4     setosa
## 79           5.7         3.8          1.7         0.3     setosa
## 80           5.7         2.8          4.5         1.3 versicolor
## 81           5.7         2.6          3.5         1.0 versicolor
## 82           5.7         3.0          4.2         1.2 versicolor
## 83           5.7         2.9          4.2         1.3 versicolor
## 84           5.7         2.8          4.1         1.3 versicolor
## 85           5.7         2.5          5.0         2.0  virginica
## 86           5.6         2.9          3.6         1.3 versicolor
## 87           5.6         3.0          4.5         1.5 versicolor
## 88           5.6         2.5          3.9         1.1 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.6         2.7          4.2         1.3 versicolor
## 91           5.6         2.8          4.9         2.0  virginica
## 92           5.5         4.2          1.4         0.2     setosa
## 93           5.5         3.5          1.3         0.2     setosa
## 94           5.5         2.3          4.0         1.3 versicolor
## 95           5.5         2.4          3.8         1.1 versicolor
## 96           5.5         2.4          3.7         1.0 versicolor
## 97           5.5         2.5          4.0         1.3 versicolor
## 98           5.5         2.6          4.4         1.2 versicolor
## 99           5.4         3.9          1.7         0.4     setosa
## 100          5.4         3.7          1.5         0.2     setosa
## 101          5.4         3.9          1.3         0.4     setosa
## 102          5.4         3.4          1.7         0.2     setosa
## 103          5.4         3.4          1.5         0.4     setosa
## 104          5.4         3.0          4.5         1.5 versicolor
## 105          5.3         3.7          1.5         0.2     setosa
## 106          5.2         3.5          1.5         0.2     setosa
## 107          5.2         3.4          1.4         0.2     setosa
## 108          5.2         4.1          1.5         0.1     setosa
## 109          5.2         2.7          3.9         1.4 versicolor
## 110          5.1         3.5          1.4         0.2     setosa
## 111          5.1         3.5          1.4         0.3     setosa
## 112          5.1         3.8          1.5         0.3     setosa
## 113          5.1         3.7          1.5         0.4     setosa
## 114          5.1         3.3          1.7         0.5     setosa
## 115          5.1         3.4          1.5         0.2     setosa
## 116          5.1         3.8          1.9         0.4     setosa
## 117          5.1         3.8          1.6         0.2     setosa
## 118          5.1         2.5          3.0         1.1 versicolor
## 119          5.0         3.6          1.4         0.2     setosa
## 120          5.0         3.4          1.5         0.2     setosa
## 121          5.0         3.0          1.6         0.2     setosa
## 122          5.0         3.4          1.6         0.4     setosa
## 123          5.0         3.2          1.2         0.2     setosa
## 124          5.0         3.5          1.3         0.3     setosa
## 125          5.0         3.5          1.6         0.6     setosa
## 126          5.0         3.3          1.4         0.2     setosa
## 127          5.0         2.0          3.5         1.0 versicolor
## 128          5.0         2.3          3.3         1.0 versicolor
## 129          4.9         3.0          1.4         0.2     setosa
## 130          4.9         3.1          1.5         0.1     setosa
## 131          4.9         3.1          1.5         0.2     setosa
## 132          4.9         3.6          1.4         0.1     setosa
## 133          4.9         2.4          3.3         1.0 versicolor
## 134          4.9         2.5          4.5         1.7  virginica
## 135          4.8         3.4          1.6         0.2     setosa
## 136          4.8         3.0          1.4         0.1     setosa
## 137          4.8         3.4          1.9         0.2     setosa
## 138          4.8         3.1          1.6         0.2     setosa
## 139          4.8         3.0          1.4         0.3     setosa
## 140          4.7         3.2          1.3         0.2     setosa
## 141          4.7         3.2          1.6         0.2     setosa
## 142          4.6         3.1          1.5         0.2     setosa
## 143          4.6         3.4          1.4         0.3     setosa
## 144          4.6         3.6          1.0         0.2     setosa
## 145          4.6         3.2          1.4         0.2     setosa
## 146          4.5         2.3          1.3         0.3     setosa
## 147          4.4         2.9          1.4         0.2     setosa
## 148          4.4         3.0          1.3         0.2     setosa
## 149          4.4         3.2          1.3         0.2     setosa
## 150          4.3         3.0          1.1         0.1     setosa

7.4 Ordem alfabética

7.4.1 A-Z

Assim como em uma ordenação númerica, o padrão da ordenação alfabética é a ordenação A-Z. Uma coisa muito útil da função arrange() é que ela identifica a natureza dos valores, se estes são numéricos, de texto ou fatores, assim fazendo o tipo de reordenação correta na variável.

starwars %>% 
  arrange(name)
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Ackbar         180    83 none    brown … orange     41   male  mascu… Mon Ca…
##  2 Adi Gallia     184    50 none    dark    blue       NA   fema… femin… Corusc…
##  3 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  4 Arvel Cryn…     NA    NA brown   fair    brown      NA   male  mascu… <NA>   
##  5 Ayla Secura    178    55 none    blue    hazel      48   fema… femin… Ryloth 
##  6 Bail Prest…    191    NA black   tan     brown      67   male  mascu… Aldera…
##  7 Barriss Of…    166    50 black   yellow  blue       40   fema… femin… Mirial 
##  8 BB8             NA    NA none    none    black      NA   none  mascu… <NA>   
##  9 Ben Quadin…    163    65 none    grey, … orange     NA   male  mascu… Tund   
## 10 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

7.4.2 Z-A

Novamente, basta apenas utilizar o comando desc().

starwars %>% 
  arrange(desc(name))
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Zam Wesell     168    55 blonde  fair, … yellow       NA fema… femin… Zolan  
##  2 Yoda            66    17 white   green   brown       896 male  mascu… <NA>   
##  3 Yarael Poof    264    NA none    white   yellow       NA male  mascu… Quermia
##  4 Wilhuff Ta…    180    NA auburn… fair    blue         64 male  mascu… Eriadu 
##  5 Wicket Sys…     88    20 brown   brown   brown         8 male  mascu… Endor  
##  6 Wedge Anti…    170    77 brown   fair    hazel        21 male  mascu… Corell…
##  7 Watto          137    NA black   blue, … yellow       NA male  mascu… Toydar…
##  8 Wat Tambor     193    48 none    green,… unknown      NA male  mascu… Skako  
##  9 Tion Medon     206    80 none    grey    black        NA male  mascu… Utapau 
## 10 Taun We        213    NA none    grey    black        NA fema… femin… Kamino 
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

7.5 Outras órdens desejadas

Os métodos apresentados são úteis quando o reordenamento segue uma ordem, mas em outras ordens, que não seguem as regras apresentadas, estas funções não são muito úteis. Desta forma, para outros reordenamentos, é necessário usar outros comando, estes mais básicos. Nesse caso, vamos dividir o dataset original em outros, de acordo com os valores da variável desejada, com a função filter(), do pacote dplyr.

Primeiro, serão visualizados quais os valores da variável hair_color, do dataset starwars, através da transformação em fator e em seguido verificando os níveis.

starwars$hair_color %>% as.factor() %>% levels() 
##  [1] "auburn"        "auburn, grey"  "auburn, white" "black"        
##  [5] "blond"         "blonde"        "brown"         "brown, grey"  
##  [9] "grey"          "none"          "unknown"       "white"

Após saber quais os os valores, pode-se ser feitos datasets separados.

auburn<-starwars %>% 
  filter(hair_color=="auburn") 

`auburn, grey`<-starwars %>% 
  filter(hair_color=="auburn, grey")

`auburn, white`<-starwars %>% 
  filter(hair_color=="auburn, white")

black<-starwars %>% 
  filter(hair_color=="black")

blond<-starwars %>% 
  filter(hair_color=="blond")

blonde<-starwars %>% 
  filter(hair_color=="blonde")

brown<-starwars %>% 
  filter(hair_color=="brown")

`brown, grey`<-starwars %>% 
  filter(hair_color=="brown, grey")

grey<-starwars %>% 
  filter(hair_color=="grey")

none<-starwars %>% 
  filter(hair_color=="none")

unknown<-starwars %>% 
  filter(hair_color=="unknown")

white<-starwars %>% 
  filter(hair_color=="white")

`NA`<-starwars %>% 
  filter(is.na(hair_color))

Como nesta situaçao foram muitos valores, então muito objetos a serem criados, vale se lembrar que, ao invés de digitar o código todo, poupa tempo apenas cópiar e colar o comando, apenas alterando os parâmetros necessários, como o nome do objeto e da variável. Também vale ressaltar que as linhas contendo dados NA precisam tambem serem selecionadas, pois sem elas, havaeria perda de linhas de outras variável, e assim, perdendo informação. Por isso, lembre-se sempre de verificar a existância de dados NA, podendo utilizar a função is.na(). Com os objetos gerados, deve-se unir as linhas desses objetos, através da função rbind(). Essa função juntas as linhas indicadas dentro da função, na sequência dos indicada dos objetos na função

starwars_reoganizado<-rbind(blond,blonde,auburn,`auburn, grey`,`auburn, white`,brown,`brown, grey`,black,grey,white,unknown,none,`NA`) # juntando as linhas

starwars_reoganizado # conferindo os dados
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  3 Finis Valo…    170    NA blond   fair    blue       91   male  mascu… Corusc…
##  4 Zam Wesell     168    55 blonde  fair, … yellow     NA   fema… femin… Zolan  
##  5 Mon Mothma     150    NA auburn  fair    blue       48   fema… femin… Chandr…
##  6 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  9 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
## 10 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

Antes de finalizar a operação, vale o cuidado de conferir se o nº de linhas do dataset criado bate com o dataset original, para garantir que não houve perda de dados.

nrow(starwars)==nrow(starwars_reoganizado)
## [1] TRUE

Como foi possível observar, os números de linhas batem, então rejeita-se a hipótese que ocorreu perda de dados no processo. Uma coisa interessante desse método, é que ele também pode ser utilizado para reordenar a ordem das variável, substituindo apenas o filter() por select(), e o rbind() por cbind().

8 Controlando os fatores

Fatores são um tipo de dado categórico do R. Diferente dos dados de texto (charater), os fatores (factor) representam variáveis categóricas, numericamente. Diferente dos dados de texto, os fatores não ficam representados por aspas, e possuem níveis, que representam uma “hierarquia” dos fatores. Algumas operações do R exigem que os dados estejam como fator. O principal pacote para trabalhar com os fatores é o forcats, que também faz parte do tidyverse.

8.1 Pacotes exigidos

library(tidyverse)

8.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

starwars # Visualizando os dados
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sempalas e de pétalas de 3 espécies de plantas

iris # Visualizando os dados
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica

8.3 Transformando em fator

É possível transformar um dado de texto em fator. Para isso, primeiro é preciso saber se os dados estão em fator. Existem duas principais formas de fazer isso.

# Método class() 

starwars$name %>% 
  class()
## [1] "character"
# Método is.factor()

starwars$name %>% 
  is.factor()
## [1] FALSE

Como mostrado, os dados não estão em fator. Pra transformar em fator, usa-se a função as.factor().

starwars$name %>% 
  as.factor() %>% 
  is.factor()
## [1] TRUE

Como foi possível observar, os dados foram transformmados em fatores.

8.4 Alterando os fatores

Também é possível redefinir os fatores utilizados, através da função fact_recode(). Para mostrar essas difernaças na prática, vamos utilizar o ggplot, da função ggplot(), do pacote ggplot2. Para saber mais sobre o ggplot, clique aqui nesse outro RPubs.

starwars %>% 
  ggplot(aes(gender,height,fill=gender))+
  geom_point(shape=21,color="black",size=4)+
  labs(x="gênero",
       y="altura",
       fill="gênero")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

Agora os fatores serão alterados.

# Alterando os fatores

starwars$gender<-starwars$gender %>% 
  as.factor() %>% 
  fct_recode(masculino="masculine",
             feminino="feminine")

# Criando o ggplot

starwars %>% 
  ggplot(aes(gender,height,fill=gender))+
  geom_point(shape=21,color="black",size=4)+
  labs(x="gênero",
       y="altura",
       fill="gênero")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

8.5 Alterando os níveis dos fatores

Para mostrar como os fatores se distribuem natural e de forma alfabética, é útil utilizar um ggplot.

iris %>% 
  ggplot(aes(Species,Sepal.Length,fill=Species))+
  geom_point(shape=21,color="black",size=4)+
  labs(x="espécie",
       y="Comprimento da sépala (cm)",
       fill="espécie")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

8.5.1 Ordem decrescente ou Z-A

Existem algumas formas de reorganizar estas sequências de níveis. Uma forma é reorganizar em ordem decrescente ou Z-A, através da função fct_rev().

# Alterando a ordem alfebética para Z-A

iris$Species<-iris$Species %>% 
  fct_rev()

# Criando o ggplot

iris %>% 
  ggplot(aes(Species,Sepal.Length,fill=Species))+
  geom_point(shape=21,color="black",size=4)+
  labs(x="espécie",
       y="Comprimento da sépala (cm)",
       fill="espécie")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

8.5.2 Ordem específica

Caso seja alguma ordem específica, é possível fazer utilizando a função fct_relevel().

# Reordenando os níveis

iris$Species<-iris$Species %>% 
  fct_relevel("virginica",
              "setosa",
              "versicolor")

# Criando o ggplot

iris %>% 
  ggplot(aes(Species,Sepal.Length,fill=Species))+
  geom_point(shape=21,color="black",size=4)+
  labs(x="espécie",
       y="Comprimento da sépala (cm)",
       fill="espécie")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

9 Selecionando linhas por hierarquia dos valores

Há situações onde o que se deseja é saber as nº primeiras ou últimas ocorrências dos maiores ou menores dados de uma variável, os elementos de uma variável categórica que representam os nº maiores ou menores valores de um variável contínua ou até quantas vezes aparecem os os elementos de uma variável categórica que representam os nº maiores ou menores valores de um variável contínua. Dentro das data sciences, situações podem se tornar rotineiras, e parte da tomada de decisão, seja no mundo dos negócios ou em pesquisas científicas. Para fazer essas operações, bastam apenas funções bastante básicas, algumas já vistas aqui, apenas combinadas em sequência.

9.1 Pacotes exigidos

library(tidyverse)
library(palmerpenguins) # para extrair os dados de pinguins

9.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

starwars # Visualizando os dados
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(penguins) # Medidas de tamanho para pinguins forrageiros adultos de pinguins perto da Estação Palmer, Antártica

penguins # Visualizando os dados
## # A tibble: 344 × 8
##    species island    bill_length_mm bill_depth_mm flipper_…¹ body_…² sex    year
##    <fct>   <fct>              <dbl>         <dbl>      <int>   <int> <fct> <int>
##  1 Adelie  Torgersen           39.1          18.7        181    3750 male   2007
##  2 Adelie  Torgersen           39.5          17.4        186    3800 fema…  2007
##  3 Adelie  Torgersen           40.3          18          195    3250 fema…  2007
##  4 Adelie  Torgersen           NA            NA           NA      NA <NA>   2007
##  5 Adelie  Torgersen           36.7          19.3        193    3450 fema…  2007
##  6 Adelie  Torgersen           39.3          20.6        190    3650 male   2007
##  7 Adelie  Torgersen           38.9          17.8        181    3625 fema…  2007
##  8 Adelie  Torgersen           39.2          19.6        195    4675 male   2007
##  9 Adelie  Torgersen           34.1          18.1        193    3475 <NA>   2007
## 10 Adelie  Torgersen           42            20.2        190    4250 <NA>   2007
## # … with 334 more rows, and abbreviated variable names ¹​flipper_length_mm,
## #   ²​body_mass_g

9.3 Selecionando as n observações com os maiores valores de uma variável

Essa é o tipo de situação em que você precisa extrair os maiores valores de uma variável, normalmente combinando com uma variável categórica, para saber dessa variável categórica quai os elementos que aparecem. Um exemplo seria verificar dentro de um dataset sobre nº de espécies de anfíbios em diversos fragmentos de mata atlântica, quais os fragmentos correspondem às 5 maiores observações do nº de anfíbios.

9.3.1 Método arrange()

Esse exemplo, serão selecionadas as ocorrências com as ilhas com as 30 maiores ocorrências do massa corporal das três espécies de pinguins, através das variável island e body_mass_g, do dataset penguins. Aqui, será utilizada a função arrange, para uma ordem numérica decrescente, atribuída a um novo objeto e então extraído as 30 primeiras linhas.

pinguins_30_max<-penguins %>% 
  arrange(desc(body_mass_g)) # Criando o novo dataset

pinguins_30_max[1:30,] %>% 
  select(body_mass_g) # Vizualizando as 30 primeiras observações
## # A tibble: 30 × 1
##    body_mass_g
##          <int>
##  1        6300
##  2        6050
##  3        6000
##  4        6000
##  5        5950
##  6        5950
##  7        5850
##  8        5850
##  9        5850
## 10        5800
## # … with 20 more rows

Para melhor vizualizar, será feito um gráfico com a função ggplot(), do pacote ggplot2.

pinguins_30_max[1:30,] %>% 
  ggplot(aes(island,body_mass_g))+ 
  geom_boxplot(color="black",fill="#FFAA52")+
  labs(x="ilhas",
       y="massa corporal (g)")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

Como foi possível observar, apenas a ilha Biscoe foi presente nas 30 maiores ocorrências da variável de massa corporal dos pinguins. Agora, irá ser feito a mesma análise, mas com os anos como variável categórica no boxplot.

9.3.2 Método slice_max()

O slice_max() é uma das funções slice(), que retira porções de observações de um dataset, do pacote dplyr. Ao contrário do filter(), que seleciona todas as possíveis observações baseadas na regra de filtragem, os as funções slice() selecionam apenas um número pre-estabelecido de observações, baseado não em regras de filtragem, mas em hierarquia, como as primeiras, as últimas ou as menores observações. A função slice_max() todas a n maiores maiores observações de uma variável, onde o n é estabelecido na função. Será feita a mesma coisa feita anteiormente com o dataset penguins, mas apenas usando a função slice_max().

penguins %>% 
  slice_max(body_mass_g,n=30) %>% 
  select(body_mass_g)
## # A tibble: 33 × 1
##    body_mass_g
##          <int>
##  1        6300
##  2        6050
##  3        6000
##  4        6000
##  5        5950
##  6        5950
##  7        5850
##  8        5850
##  9        5850
## 10        5800
## # … with 23 more rows

Usando a função slice_max(), é possível fazer exatamente a mesma coisa, porém de forma muito mais simples que no método anterior. Vale ressaltar que, se você selecionar n=1, para o slice_max(), e houverem mais de uma ocorrência com o mesmo valor, ele retornará todos as observações que possuírem aquele valor, sendo então maior que 1 observação.

9.4 Selecionando as n observações com menores valores de uma variável

Esse é exatamente o oposto do tópico anterior. Aqui também será repetido o método com o arrange() e uma função slice().

9.4.1 Método arrange()

Nesse exemplo, serão selecionadas as ocorrências com as ilhas com as 30 menores ocorrências do massa corporal das três espécies de pinguins, através das variável island e body_mass_g, do dataset penguins. Aqui, será utilizada novamente a função arrange, mas agora para uma ordem numérica crescente, atribuída a um novo objeto e então extraído as 30 primeiras linhas, referentes às 30 menores observações do dataset original.

pinguins_30_min<-penguins %>% 
  arrange(body_mass_g) # Criando o novo dataset

pinguins_30_min[1:30,] %>% 
  select(body_mass_g) # Vizualizando as 30 primeiras observações
## # A tibble: 30 × 1
##    body_mass_g
##          <int>
##  1        2700
##  2        2850
##  3        2850
##  4        2900
##  5        2900
##  6        2900
##  7        2900
##  8        2925
##  9        2975
## 10        3000
## # … with 20 more rows

Como é possível observar, consegui-se extrair as 30 observações com os menores valores. Novamente, para melhor vizualizar, será feito um gráfico com a função ggplot(), do pacote ggplot2.

pinguins_30_min[1:30,] %>% 
  ggplot(aes(island,body_mass_g,fill=island))+ 
  geom_boxplot(color="black")+
  labs(x="ilhas",
       y="massa corporal (g)",
       fill="ilha")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

Quando selecionamos as 30 observações os menores valores de massa corporal, é possível obter dados das 3 ilhas.

9.4.2 Método slice_min()

Esse também faz o oposto da sua “irmã” slice_max(): retira uma porção com as n menores observações de um dataset. Aqui também, o n é definido previamente na função. Será feito a mesma operação do tópico anterior, mas com a função slice_min(), também do pacote dplyr.

penguins %>% 
  slice_min(body_mass_g,n=30) %>% 
  select(body_mass_g)
## # A tibble: 33 × 1
##    body_mass_g
##          <int>
##  1        2700
##  2        2850
##  3        2850
##  4        2900
##  5        2900
##  6        2900
##  7        2900
##  8        2925
##  9        2975
## 10        3000
## # … with 23 more rows

É uma forma mais simples de extrair as n observações com os menores valores, com menos linhas de código.

9.5 Selecionando as primeiras observações de um dataset

Esse é o tipo de situação em que, em mãos de um dataset, você precisa selecionar as primeiras n observações. Um exemplo dessas situações é quando você pegou um dataset que contém os dados de candidatos a um workshop, e ganharia os 40 primeiros que se inscreverem, e o seu dataset tem 185 observaçãoes. Outro cenário é quando você tratou previamente um dataset de notas de candidatos a uma vaga de emprego que passaram por um treinee, reorganizou por órdem decrescente os valores das pontuações dos candidatos (como feito nos tópicos anteriores), e precisa selecionar os candidatos com as 10 maiores pontuações. E se você já praticou ou prestou atenção no capítulo 1 dessa apostila, já deve estar pensando que basta usar o comando dataset tratado[1:10,]. Sim, dá pra fazer assim, mas também há algumas funções que fazem isso.

9.5.1 Método head()

A função head(), do pacote nativo utils, seleciona as primeiras n obbservações do dataset, onde o n também é especificado na função (daí o nome da função: “cabeça”). Nesse exemplo, serão selecionadas as 15 primeiras observações do dataset starwars.

starwars %>% 
  head(n=15)
## # A tibble: 15 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## 11 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
## 12 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
## 13 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 14 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## 15 Greedo         173    74 <NA>    green   black      44   male  mascu… Rodia  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

9.5.2 Método slice_head()

Essa é mais uma pra lista das funções slice(), também do pacote dplyr. O funcionamento desta é extamente igual à função anterior. Aqui, também será útilizada o dataset starwars para selecionar suas 15 primeiras observaçãoes.

starwars %>% 
  slice_head(n=15)
## # A tibble: 15 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## 11 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
## 12 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
## 13 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## 14 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
## 15 Greedo         173    74 <NA>    green   black      44   male  mascu… Rodia  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

9.6 Selecionando as últimas observações de um dataset

Equanto que para selecionar as n primeiras observações de uma variável é algo quase que “à gosto”, já que há 3 formas de fazer, todas bem simples, o mesmo não acontece com selecionar as n últimas observações de uma variável. Isso acontece porque as 20 primeiras observações de um dataset não dependem do seu tamanho, do seu n de obserações: as 20 primeras observações serão as 20 primeiras, seja seu dataset tendo 50 ou 50000 observações.

Contudo, a situação muda se forem as n últimas linhas, caso você use o comando dataset[n:n,]: se você usar dataset[31:50,] para um dataset que tenha 50 observações, você terá as 20 últimas observações, mas de você tiver um dataset com 50000 observações, e você fizer o mesmo comando, você não terá as 20 últimas observações. Nessa situação, funções que fazem isso de forma automática são muito úteis e polpam linhas de código.

9.6.1 Método tail()

A função tail() é uma função do pacote utils, e que seleciona as n últimas observações de um dataset. Aqui, será feito como nos exemplos anteriores, mas dessa vez, para as 20 últimas observações.

starwars %>% 
  tail(n=20)
## # A tibble: 20 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Dexter Jet…    198   102 none    brown   yellow       NA male  mascu… Ojom   
##  2 Lama Su        229    88 none    grey    black        NA male  mascu… Kamino 
##  3 Taun We        213    NA none    grey    black        NA fema… femin… Kamino 
##  4 Jocasta Nu     167    NA white   fair    blue         NA fema… femin… Corusc…
##  5 Ratts Tyer…     79    15 none    grey, … unknown      NA male  mascu… Aleen …
##  6 R4-P17          96    NA none    silver… red, b…      NA none  femin… <NA>   
##  7 Wat Tambor     193    48 none    green,… unknown      NA male  mascu… Skako  
##  8 San Hill       191    NA none    grey    gold         NA male  mascu… Muunil…
##  9 Shaak Ti       178    57 none    red, b… black        NA fema… femin… Shili  
## 10 Grievous       216   159 none    brown,… green,…      NA male  mascu… Kalee  
## 11 Tarfful        234   136 brown   brown   blue         NA male  mascu… Kashyy…
## 12 Raymus Ant…    188    79 brown   light   brown        NA male  mascu… Aldera…
## 13 Sly Moore      178    48 none    pale    white        NA <NA>  <NA>   Umbara 
## 14 Tion Medon     206    80 none    grey    black        NA male  mascu… Utapau 
## 15 Finn            NA    NA black   dark    dark         NA male  mascu… <NA>   
## 16 Rey             NA    NA brown   light   hazel        NA fema… femin… <NA>   
## 17 Poe Dameron     NA    NA brown   light   brown        NA male  mascu… <NA>   
## 18 BB8             NA    NA none    none    black        NA none  mascu… <NA>   
## 19 Captain Ph…     NA    NA unknown unknown unknown      NA <NA>  <NA>   <NA>   
## 20 Padmé Amid…    165    45 brown   light   brown        46 fema… femin… Naboo  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

9.6.2 Método slice_tail()

Outras das funções slice(), do pacote dplyr, a função slice_tail() também seleciona as n menores observações de um dataset. Para esse exemplo, será seguido o exemplo anterior.

starwars %>% 
  slice_tail(n=20)
## # A tibble: 20 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Dexter Jet…    198   102 none    brown   yellow       NA male  mascu… Ojom   
##  2 Lama Su        229    88 none    grey    black        NA male  mascu… Kamino 
##  3 Taun We        213    NA none    grey    black        NA fema… femin… Kamino 
##  4 Jocasta Nu     167    NA white   fair    blue         NA fema… femin… Corusc…
##  5 Ratts Tyer…     79    15 none    grey, … unknown      NA male  mascu… Aleen …
##  6 R4-P17          96    NA none    silver… red, b…      NA none  femin… <NA>   
##  7 Wat Tambor     193    48 none    green,… unknown      NA male  mascu… Skako  
##  8 San Hill       191    NA none    grey    gold         NA male  mascu… Muunil…
##  9 Shaak Ti       178    57 none    red, b… black        NA fema… femin… Shili  
## 10 Grievous       216   159 none    brown,… green,…      NA male  mascu… Kalee  
## 11 Tarfful        234   136 brown   brown   blue         NA male  mascu… Kashyy…
## 12 Raymus Ant…    188    79 brown   light   brown        NA male  mascu… Aldera…
## 13 Sly Moore      178    48 none    pale    white        NA <NA>  <NA>   Umbara 
## 14 Tion Medon     206    80 none    grey    black        NA male  mascu… Utapau 
## 15 Finn            NA    NA black   dark    dark         NA male  mascu… <NA>   
## 16 Rey             NA    NA brown   light   hazel        NA fema… femin… <NA>   
## 17 Poe Dameron     NA    NA brown   light   brown        NA male  mascu… <NA>   
## 18 BB8             NA    NA none    none    black        NA none  mascu… <NA>   
## 19 Captain Ph…     NA    NA unknown unknown unknown      NA <NA>  <NA>   <NA>   
## 20 Padmé Amid…    165    45 brown   light   brown        46 fema… femin… Naboo  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

9.7 Selecionando uma amostra aleatória de um dataset

Em situações em que é necessário extrair uma amostra aleatória de um dataset, para escolher locais para fazer coleta de dados, ou para análises estatísticas, é necessário algoritmos que sigam modelos aleatórios, sem viéses. No R, é possível fazer isso utilizando a função slice_sample(). Essa função será utillziada para a extrair uma amostra de 30 observações do dataset starwars.

starwars %>% 
  slice_sample(n=30)
## # A tibble: 30 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Nien Nunb      160  68   none    grey    black      NA   male  mascu… Sullust
##  2 Bib Fortuna    180  NA   none    pale    pink       NA   male  mascu… Ryloth 
##  3 Jek Tono P…    180 110   brown   fair    blue       NA   male  mascu… Bestin…
##  4 Tarfful        234 136   brown   brown   blue       NA   male  mascu… Kashyy…
##  5 IG-88          200 140   none    metal   red        15   none  mascu… <NA>   
##  6 Jocasta Nu     167  NA   white   fair    blue       NA   fema… femin… Corusc…
##  7 Boba Fett      183  78.2 black   fair    brown      31.5 male  mascu… Kamino 
##  8 Lama Su        229  88   none    grey    black      NA   male  mascu… Kamino 
##  9 R2-D2           96  32   <NA>    white,… red        33   none  mascu… Naboo  
## 10 Raymus Ant…    188  79   brown   light   brown      NA   male  mascu… Aldera…
## # … with 20 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

É um algoritimo aleatório, pois se eu fizer a mesma operação novamente, retornarão valores diferentes.

starwars %>% 
  slice_sample(n=30)
## # A tibble: 30 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Barriss Of…    166    50 black   yellow  blue         40 fema… femin… Mirial 
##  2 Palpatine      170    75 grey    pale    yellow       82 male  mascu… Naboo  
##  3 Nien Nunb      160    68 none    grey    black        NA male  mascu… Sullust
##  4 Bail Prest…    191    NA black   tan     brown        67 male  mascu… Aldera…
##  5 Adi Gallia     184    50 none    dark    blue         NA fema… femin… Corusc…
##  6 Arvel Cryn…     NA    NA brown   fair    brown        NA male  mascu… <NA>   
##  7 Tion Medon     206    80 none    grey    black        NA male  mascu… Utapau 
##  8 R2-D2           96    32 <NA>    white,… red          33 none  mascu… Naboo  
##  9 Jek Tono P…    180   110 brown   fair    blue         NA male  mascu… Bestin…
## 10 Leia Organa    150    49 brown   light   brown        19 fema… femin… Aldera…
## # … with 20 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

9.8 Elementos que mais aparecem dentro de uma seleção

Deu para perceber que há várias formas de selecionar observações de um dataset por algum critério hierárquico, mas também há como combinar estes comando com outros, para fins como saber quais os elementos de uma variável categórica mais aparecem. Um exemplo disso seria pegar um dataset sobre a ocorrência de anfíbios em áreas de mata atlântica, onde cada linha representa um dia de pesquisa, seu dataset tendo 300 linhas, e você precisa saber quais foram as espécies que foram registradas nos primeiros 50 dias e quantas vezes cada espécie ocorreu, ou quantas vezes cada espécie ocorreu nas observações com os 30 maiores valores. Esse é só um dos exemplos que podem ocorrer onde é necessário combinar comandos.

9.8.1 Elementos que mais aparecem dentro das primeiras observações

Para esse exemplo, será usado o dataset starwars, e catalogar quais cores dos olhos, da variável eye_color, mais aparecem nas 50 primeiras observações, e a conatagem de quantas vezes cada cor do olho ocorre, com as funções group_by() e summarise(), já faladas no capítulo 4.

starwars %>% 
  slice_head(n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) 
## # A tibble: 9 × 2
##   eye_color `quantas vezes apareceu?`
##   <chr>                         <int>
## 1 black                             4
## 2 blue                             12
## 3 blue-gray                         1
## 4 brown                            11
## 5 hazel                             2
## 6 orange                            7
## 7 pink                              1
## 8 red                               5
## 9 yellow                            7

Se for desejado extrair em ordem decrescente, onde as primeiras observações mostram os maiores valores, basta apenas usar a função arrange(), com o comando desc() para a variável quantas vezes apareceu?.

starwars %>% 
  slice_head(n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) %>%
  arrange(desc(`quantas vezes apareceu?`))
## # A tibble: 9 × 2
##   eye_color `quantas vezes apareceu?`
##   <chr>                         <int>
## 1 blue                             12
## 2 brown                            11
## 3 orange                            7
## 4 yellow                            7
## 5 red                               5
## 6 black                             4
## 7 hazel                             2
## 8 blue-gray                         1
## 9 pink                              1

Foi possível observar que, nas primeiras 50 observações, a maior parte dos personagens tiveram cor de olho azul, seguido por marrom e laranja.

9.8.2 Elementos que mais aparecem dentro das últimas observações

Será repetido o mesmo processo aqui, mas com as últimas linhas, a fim de ver se o fenômeno se repete.

starwars %>% 
  slice_tail(n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) 
## # A tibble: 13 × 2
##    eye_color     `quantas vezes apareceu?`
##    <chr>                             <int>
##  1 black                                 8
##  2 blue                                  7
##  3 brown                                13
##  4 dark                                  1
##  5 gold                                  1
##  6 green, yellow                         1
##  7 hazel                                 2
##  8 orange                                3
##  9 pink                                  1
## 10 red, blue                             1
## 11 unknown                               3
## 12 white                                 1
## 13 yellow                                8

NOvamente, será usado o arrange() para organizar os dados de contagem.

starwars %>% 
  slice_tail(n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) %>%
  arrange(desc(`quantas vezes apareceu?`))
## # A tibble: 13 × 2
##    eye_color     `quantas vezes apareceu?`
##    <chr>                             <int>
##  1 brown                                13
##  2 black                                 8
##  3 yellow                                8
##  4 blue                                  7
##  5 orange                                3
##  6 unknown                               3
##  7 hazel                                 2
##  8 dark                                  1
##  9 gold                                  1
## 10 green, yellow                         1
## 11 pink                                  1
## 12 red, blue                             1
## 13 white                                 1

Nas 50 últimas observações, houveram mais personagens cor de olho marrom, ao contrário do anterior, seguido por preto e amarelo.

9.8.3 Elementos que mais aparecem dentro das observações com os maiores valores

Seguindo a mesma lógica dos exemplos anteriores, apenas será usada a função slice_max() para catalogar as cores dos olhos dos personagens que aparecem nas 50 observações com os maiores valores para a massa do corpo e contar sua ocorrência. Dessa vez, a função arrange() já será operad em conjunto.

starwars %>% 
  slice_max(mass,n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) %>% 
  arrange(desc(`quantas vezes apareceu?`))
## # A tibble: 11 × 2
##    eye_color     `quantas vezes apareceu?`
##    <chr>                             <int>
##  1 blue                                 12
##  2 brown                                10
##  3 yellow                                8
##  4 black                                 7
##  5 orange                                5
##  6 red                                   3
##  7 hazel                                 2
##  8 blue-gray                             1
##  9 green, yellow                         1
## 10 unknown                               1
## 11 white                                 1

Para as 50 observações com os maiores valores da variável da massa, a cor do olho azul foi a que mais apareceu, seguida de marrom e amarelo.

9.8.4 Elementos que mais aparecem dentro das observações com os menores valores

Seguindo a mesma lógica do exemplo feito anteriormente, apenas será usada a função slice_min(), e não slice_max(), para catalogar as cores dos olhos dos personagens que aparecem nas 50 observações com os menores valores para a massa do corpo e contar sua ocorrência. Dessa vez, a função arrange() também já será operad em conjunto.

starwars %>% 
  slice_min(mass,n=50) %>% 
  group_by(eye_color) %>% 
  summarise(`quantas vezes apareceu?`=n()) %>% 
  arrange(desc(`quantas vezes apareceu?`))
## # A tibble: 10 × 2
##    eye_color `quantas vezes apareceu?`
##    <chr>                         <int>
##  1 brown                            13
##  2 blue                              8
##  3 yellow                            8
##  4 black                             7
##  5 orange                            5
##  6 red                               3
##  7 hazel                             2
##  8 unknown                           2
##  9 blue-gray                         1
## 10 white                             1

Aqui os resultados se inverteram um pouco: nas 50 observações com os menores valores de massa, a cor de olho marrom foi a que mais apareceu, esta então seguida de azul e amarelo.

10 Manipulando o nome das linhas e das colunas

A manipulação dos nomes das colunas e das linhas é outra parte importante e corriqueira dentro das ciências de dados, já que, frequentemente, não apenas os nomes de uma variável precisa ser modificado, mas também das linhas, seja adicionar, alterar o nome destas ou até remover. Com comandos simples, principalamente do pacote base, é possível fazer isso de forma rápida.

10.1 Pacotes exigidos

library(tidyverse)

10.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sépalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

10.3 Controlando as colunas

10.3.1 Alterando o nome das colunas

Utilizando a função colnames(), do pacote base, para as variáveis selecionadas, é possível atribuir novos nomes às variáveis. Nesse exemplo, será usado o dataset starwars, onde o nome de algumas variáveis possuem um _ no seu nome. Será removido estes nomes por outros sem _.

colnames(starwars)[4]<-"hair.color"

starwars[,4]
## # A tibble: 87 × 1
##    hair.color   
##    <chr>        
##  1 blond        
##  2 <NA>         
##  3 <NA>         
##  4 none         
##  5 brown        
##  6 brown, grey  
##  7 brown        
##  8 <NA>         
##  9 black        
## 10 auburn, white
## # … with 77 more rows

Especificando o nº de coluna, é possível atribuir um nome nome à variável. Agora serão alterados todos os nomes que contiverem _.

colnames(starwars)[4:7]<-c("skin color", "eye color","birth year")

starwars[4:7]
## # A tibble: 87 × 4
##    `skin color`  `eye color` `birth year` `skin color`
##    <chr>         <chr>       <chr>               <dbl>
##  1 blond         fair        blue                 19  
##  2 <NA>          gold        yellow              112  
##  3 <NA>          white, blue red                  33  
##  4 none          white       yellow               41.9
##  5 brown         light       brown                19  
##  6 brown, grey   light       blue                 52  
##  7 brown         light       blue                 47  
##  8 <NA>          white, red  red                  NA  
##  9 black         light       brown                24  
## 10 auburn, white fair        blue-gray            57  
## # … with 77 more rows

Como observado acima, todas as colunas que possuiam _ tiveram seus nomes alterados.

10.3.2 Removendo o nome das colunas

Além de alterar seus nomes, outra coisa possível é remover os nomes, seja de uma, de várias ou de todas as colunas de um dataset. Nesse caso, basta apenas atribuir um NA aos nomes das colunas, também utilizando a função colnames().

starwars[,14] # Antes de ter o nome da coluna excluído
## # A tibble: 87 × 1
##    starships
##    <list>   
##  1 <chr [2]>
##  2 <chr [0]>
##  3 <chr [0]>
##  4 <chr [1]>
##  5 <chr [0]>
##  6 <chr [0]>
##  7 <chr [0]>
##  8 <chr [0]>
##  9 <chr [1]>
## 10 <chr [5]>
## # … with 77 more rows
colnames(starwars)[14]<-NA

starwars[,14] # Após ter o nome da coluna excluído
## # A tibble: 87 × 1
##    ``       
##    <list>   
##  1 <chr [2]>
##  2 <chr [0]>
##  3 <chr [0]>
##  4 <chr [1]>
##  5 <chr [0]>
##  6 <chr [0]>
##  7 <chr [0]>
##  8 <chr [0]>
##  9 <chr [1]>
## 10 <chr [5]>
## # … with 77 more rows

10.3.3 Adicionando nome às colunas

Aqui segue basicamente a mesma lógica do esquema anterior.

colnames(starwars)[14]<-"Starships"

starwars[,14]
## # A tibble: 87 × 1
##    Starships
##    <list>   
##  1 <chr [2]>
##  2 <chr [0]>
##  3 <chr [0]>
##  4 <chr [1]>
##  5 <chr [0]>
##  6 <chr [0]>
##  7 <chr [0]>
##  8 <chr [0]>
##  9 <chr [1]>
## 10 <chr [5]>
## # … with 77 more rows

10.4 Controlando as linhas

10.4.1 Adicionando nome às linhas

Nesse tipo de situação, o dataset não possui nomes para as linhas, mas precisaria ter, como o nome de cada comunidade que representasse as observações. Nesse exemplo, será utilizado o dataset iris, onde cada observação representa 1 comunidade. Para isso, será utilizada a função row.names(), do pacote base, em conjunto com a função paste0(), também do pacote base. A função paste0() cria um sequência de nomes, seguidos por números.

row.names(iris)<-paste0("comunidade ",1:150)

iris
##                Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## comunidade 1            5.1         3.5          1.4         0.2     setosa
## comunidade 2            4.9         3.0          1.4         0.2     setosa
## comunidade 3            4.7         3.2          1.3         0.2     setosa
## comunidade 4            4.6         3.1          1.5         0.2     setosa
## comunidade 5            5.0         3.6          1.4         0.2     setosa
## comunidade 6            5.4         3.9          1.7         0.4     setosa
## comunidade 7            4.6         3.4          1.4         0.3     setosa
## comunidade 8            5.0         3.4          1.5         0.2     setosa
## comunidade 9            4.4         2.9          1.4         0.2     setosa
## comunidade 10           4.9         3.1          1.5         0.1     setosa
## comunidade 11           5.4         3.7          1.5         0.2     setosa
## comunidade 12           4.8         3.4          1.6         0.2     setosa
## comunidade 13           4.8         3.0          1.4         0.1     setosa
## comunidade 14           4.3         3.0          1.1         0.1     setosa
## comunidade 15           5.8         4.0          1.2         0.2     setosa
## comunidade 16           5.7         4.4          1.5         0.4     setosa
## comunidade 17           5.4         3.9          1.3         0.4     setosa
## comunidade 18           5.1         3.5          1.4         0.3     setosa
## comunidade 19           5.7         3.8          1.7         0.3     setosa
## comunidade 20           5.1         3.8          1.5         0.3     setosa
## comunidade 21           5.4         3.4          1.7         0.2     setosa
## comunidade 22           5.1         3.7          1.5         0.4     setosa
## comunidade 23           4.6         3.6          1.0         0.2     setosa
## comunidade 24           5.1         3.3          1.7         0.5     setosa
## comunidade 25           4.8         3.4          1.9         0.2     setosa
## comunidade 26           5.0         3.0          1.6         0.2     setosa
## comunidade 27           5.0         3.4          1.6         0.4     setosa
## comunidade 28           5.2         3.5          1.5         0.2     setosa
## comunidade 29           5.2         3.4          1.4         0.2     setosa
## comunidade 30           4.7         3.2          1.6         0.2     setosa
## comunidade 31           4.8         3.1          1.6         0.2     setosa
## comunidade 32           5.4         3.4          1.5         0.4     setosa
## comunidade 33           5.2         4.1          1.5         0.1     setosa
## comunidade 34           5.5         4.2          1.4         0.2     setosa
## comunidade 35           4.9         3.1          1.5         0.2     setosa
## comunidade 36           5.0         3.2          1.2         0.2     setosa
## comunidade 37           5.5         3.5          1.3         0.2     setosa
## comunidade 38           4.9         3.6          1.4         0.1     setosa
## comunidade 39           4.4         3.0          1.3         0.2     setosa
## comunidade 40           5.1         3.4          1.5         0.2     setosa
## comunidade 41           5.0         3.5          1.3         0.3     setosa
## comunidade 42           4.5         2.3          1.3         0.3     setosa
## comunidade 43           4.4         3.2          1.3         0.2     setosa
## comunidade 44           5.0         3.5          1.6         0.6     setosa
## comunidade 45           5.1         3.8          1.9         0.4     setosa
## comunidade 46           4.8         3.0          1.4         0.3     setosa
## comunidade 47           5.1         3.8          1.6         0.2     setosa
## comunidade 48           4.6         3.2          1.4         0.2     setosa
## comunidade 49           5.3         3.7          1.5         0.2     setosa
## comunidade 50           5.0         3.3          1.4         0.2     setosa
## comunidade 51           7.0         3.2          4.7         1.4 versicolor
## comunidade 52           6.4         3.2          4.5         1.5 versicolor
## comunidade 53           6.9         3.1          4.9         1.5 versicolor
## comunidade 54           5.5         2.3          4.0         1.3 versicolor
## comunidade 55           6.5         2.8          4.6         1.5 versicolor
## comunidade 56           5.7         2.8          4.5         1.3 versicolor
## comunidade 57           6.3         3.3          4.7         1.6 versicolor
## comunidade 58           4.9         2.4          3.3         1.0 versicolor
## comunidade 59           6.6         2.9          4.6         1.3 versicolor
## comunidade 60           5.2         2.7          3.9         1.4 versicolor
## comunidade 61           5.0         2.0          3.5         1.0 versicolor
## comunidade 62           5.9         3.0          4.2         1.5 versicolor
## comunidade 63           6.0         2.2          4.0         1.0 versicolor
## comunidade 64           6.1         2.9          4.7         1.4 versicolor
## comunidade 65           5.6         2.9          3.6         1.3 versicolor
## comunidade 66           6.7         3.1          4.4         1.4 versicolor
## comunidade 67           5.6         3.0          4.5         1.5 versicolor
## comunidade 68           5.8         2.7          4.1         1.0 versicolor
## comunidade 69           6.2         2.2          4.5         1.5 versicolor
## comunidade 70           5.6         2.5          3.9         1.1 versicolor
## comunidade 71           5.9         3.2          4.8         1.8 versicolor
## comunidade 72           6.1         2.8          4.0         1.3 versicolor
## comunidade 73           6.3         2.5          4.9         1.5 versicolor
## comunidade 74           6.1         2.8          4.7         1.2 versicolor
## comunidade 75           6.4         2.9          4.3         1.3 versicolor
## comunidade 76           6.6         3.0          4.4         1.4 versicolor
## comunidade 77           6.8         2.8          4.8         1.4 versicolor
## comunidade 78           6.7         3.0          5.0         1.7 versicolor
## comunidade 79           6.0         2.9          4.5         1.5 versicolor
## comunidade 80           5.7         2.6          3.5         1.0 versicolor
## comunidade 81           5.5         2.4          3.8         1.1 versicolor
## comunidade 82           5.5         2.4          3.7         1.0 versicolor
## comunidade 83           5.8         2.7          3.9         1.2 versicolor
## comunidade 84           6.0         2.7          5.1         1.6 versicolor
## comunidade 85           5.4         3.0          4.5         1.5 versicolor
## comunidade 86           6.0         3.4          4.5         1.6 versicolor
## comunidade 87           6.7         3.1          4.7         1.5 versicolor
## comunidade 88           6.3         2.3          4.4         1.3 versicolor
## comunidade 89           5.6         3.0          4.1         1.3 versicolor
## comunidade 90           5.5         2.5          4.0         1.3 versicolor
## comunidade 91           5.5         2.6          4.4         1.2 versicolor
## comunidade 92           6.1         3.0          4.6         1.4 versicolor
## comunidade 93           5.8         2.6          4.0         1.2 versicolor
## comunidade 94           5.0         2.3          3.3         1.0 versicolor
## comunidade 95           5.6         2.7          4.2         1.3 versicolor
## comunidade 96           5.7         3.0          4.2         1.2 versicolor
## comunidade 97           5.7         2.9          4.2         1.3 versicolor
## comunidade 98           6.2         2.9          4.3         1.3 versicolor
## comunidade 99           5.1         2.5          3.0         1.1 versicolor
## comunidade 100          5.7         2.8          4.1         1.3 versicolor
## comunidade 101          6.3         3.3          6.0         2.5  virginica
## comunidade 102          5.8         2.7          5.1         1.9  virginica
## comunidade 103          7.1         3.0          5.9         2.1  virginica
## comunidade 104          6.3         2.9          5.6         1.8  virginica
## comunidade 105          6.5         3.0          5.8         2.2  virginica
## comunidade 106          7.6         3.0          6.6         2.1  virginica
## comunidade 107          4.9         2.5          4.5         1.7  virginica
## comunidade 108          7.3         2.9          6.3         1.8  virginica
## comunidade 109          6.7         2.5          5.8         1.8  virginica
## comunidade 110          7.2         3.6          6.1         2.5  virginica
## comunidade 111          6.5         3.2          5.1         2.0  virginica
## comunidade 112          6.4         2.7          5.3         1.9  virginica
## comunidade 113          6.8         3.0          5.5         2.1  virginica
## comunidade 114          5.7         2.5          5.0         2.0  virginica
## comunidade 115          5.8         2.8          5.1         2.4  virginica
## comunidade 116          6.4         3.2          5.3         2.3  virginica
## comunidade 117          6.5         3.0          5.5         1.8  virginica
## comunidade 118          7.7         3.8          6.7         2.2  virginica
## comunidade 119          7.7         2.6          6.9         2.3  virginica
## comunidade 120          6.0         2.2          5.0         1.5  virginica
## comunidade 121          6.9         3.2          5.7         2.3  virginica
## comunidade 122          5.6         2.8          4.9         2.0  virginica
## comunidade 123          7.7         2.8          6.7         2.0  virginica
## comunidade 124          6.3         2.7          4.9         1.8  virginica
## comunidade 125          6.7         3.3          5.7         2.1  virginica
## comunidade 126          7.2         3.2          6.0         1.8  virginica
## comunidade 127          6.2         2.8          4.8         1.8  virginica
## comunidade 128          6.1         3.0          4.9         1.8  virginica
## comunidade 129          6.4         2.8          5.6         2.1  virginica
## comunidade 130          7.2         3.0          5.8         1.6  virginica
## comunidade 131          7.4         2.8          6.1         1.9  virginica
## comunidade 132          7.9         3.8          6.4         2.0  virginica
## comunidade 133          6.4         2.8          5.6         2.2  virginica
## comunidade 134          6.3         2.8          5.1         1.5  virginica
## comunidade 135          6.1         2.6          5.6         1.4  virginica
## comunidade 136          7.7         3.0          6.1         2.3  virginica
## comunidade 137          6.3         3.4          5.6         2.4  virginica
## comunidade 138          6.4         3.1          5.5         1.8  virginica
## comunidade 139          6.0         3.0          4.8         1.8  virginica
## comunidade 140          6.9         3.1          5.4         2.1  virginica
## comunidade 141          6.7         3.1          5.6         2.4  virginica
## comunidade 142          6.9         3.1          5.1         2.3  virginica
## comunidade 143          5.8         2.7          5.1         1.9  virginica
## comunidade 144          6.8         3.2          5.9         2.3  virginica
## comunidade 145          6.7         3.3          5.7         2.5  virginica
## comunidade 146          6.7         3.0          5.2         2.3  virginica
## comunidade 147          6.3         2.5          5.0         1.9  virginica
## comunidade 148          6.5         3.0          5.2         2.0  virginica
## comunidade 149          6.2         3.4          5.4         2.3  virginica
## comunidade 150          5.9         3.0          5.1         1.8  virginica

10.4.2 Alterando o nome das linhas

A forma para alterar o nome das linhas é semelhante a com alterar o nome das colunas.

row.names(iris)[1:3]<-c("1ª coluna","2ª coluna","3ª coluna")

iris
##                Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1ª coluna               5.1         3.5          1.4         0.2     setosa
## 2ª coluna               4.9         3.0          1.4         0.2     setosa
## 3ª coluna               4.7         3.2          1.3         0.2     setosa
## comunidade 4            4.6         3.1          1.5         0.2     setosa
## comunidade 5            5.0         3.6          1.4         0.2     setosa
## comunidade 6            5.4         3.9          1.7         0.4     setosa
## comunidade 7            4.6         3.4          1.4         0.3     setosa
## comunidade 8            5.0         3.4          1.5         0.2     setosa
## comunidade 9            4.4         2.9          1.4         0.2     setosa
## comunidade 10           4.9         3.1          1.5         0.1     setosa
## comunidade 11           5.4         3.7          1.5         0.2     setosa
## comunidade 12           4.8         3.4          1.6         0.2     setosa
## comunidade 13           4.8         3.0          1.4         0.1     setosa
## comunidade 14           4.3         3.0          1.1         0.1     setosa
## comunidade 15           5.8         4.0          1.2         0.2     setosa
## comunidade 16           5.7         4.4          1.5         0.4     setosa
## comunidade 17           5.4         3.9          1.3         0.4     setosa
## comunidade 18           5.1         3.5          1.4         0.3     setosa
## comunidade 19           5.7         3.8          1.7         0.3     setosa
## comunidade 20           5.1         3.8          1.5         0.3     setosa
## comunidade 21           5.4         3.4          1.7         0.2     setosa
## comunidade 22           5.1         3.7          1.5         0.4     setosa
## comunidade 23           4.6         3.6          1.0         0.2     setosa
## comunidade 24           5.1         3.3          1.7         0.5     setosa
## comunidade 25           4.8         3.4          1.9         0.2     setosa
## comunidade 26           5.0         3.0          1.6         0.2     setosa
## comunidade 27           5.0         3.4          1.6         0.4     setosa
## comunidade 28           5.2         3.5          1.5         0.2     setosa
## comunidade 29           5.2         3.4          1.4         0.2     setosa
## comunidade 30           4.7         3.2          1.6         0.2     setosa
## comunidade 31           4.8         3.1          1.6         0.2     setosa
## comunidade 32           5.4         3.4          1.5         0.4     setosa
## comunidade 33           5.2         4.1          1.5         0.1     setosa
## comunidade 34           5.5         4.2          1.4         0.2     setosa
## comunidade 35           4.9         3.1          1.5         0.2     setosa
## comunidade 36           5.0         3.2          1.2         0.2     setosa
## comunidade 37           5.5         3.5          1.3         0.2     setosa
## comunidade 38           4.9         3.6          1.4         0.1     setosa
## comunidade 39           4.4         3.0          1.3         0.2     setosa
## comunidade 40           5.1         3.4          1.5         0.2     setosa
## comunidade 41           5.0         3.5          1.3         0.3     setosa
## comunidade 42           4.5         2.3          1.3         0.3     setosa
## comunidade 43           4.4         3.2          1.3         0.2     setosa
## comunidade 44           5.0         3.5          1.6         0.6     setosa
## comunidade 45           5.1         3.8          1.9         0.4     setosa
## comunidade 46           4.8         3.0          1.4         0.3     setosa
## comunidade 47           5.1         3.8          1.6         0.2     setosa
## comunidade 48           4.6         3.2          1.4         0.2     setosa
## comunidade 49           5.3         3.7          1.5         0.2     setosa
## comunidade 50           5.0         3.3          1.4         0.2     setosa
## comunidade 51           7.0         3.2          4.7         1.4 versicolor
## comunidade 52           6.4         3.2          4.5         1.5 versicolor
## comunidade 53           6.9         3.1          4.9         1.5 versicolor
## comunidade 54           5.5         2.3          4.0         1.3 versicolor
## comunidade 55           6.5         2.8          4.6         1.5 versicolor
## comunidade 56           5.7         2.8          4.5         1.3 versicolor
## comunidade 57           6.3         3.3          4.7         1.6 versicolor
## comunidade 58           4.9         2.4          3.3         1.0 versicolor
## comunidade 59           6.6         2.9          4.6         1.3 versicolor
## comunidade 60           5.2         2.7          3.9         1.4 versicolor
## comunidade 61           5.0         2.0          3.5         1.0 versicolor
## comunidade 62           5.9         3.0          4.2         1.5 versicolor
## comunidade 63           6.0         2.2          4.0         1.0 versicolor
## comunidade 64           6.1         2.9          4.7         1.4 versicolor
## comunidade 65           5.6         2.9          3.6         1.3 versicolor
## comunidade 66           6.7         3.1          4.4         1.4 versicolor
## comunidade 67           5.6         3.0          4.5         1.5 versicolor
## comunidade 68           5.8         2.7          4.1         1.0 versicolor
## comunidade 69           6.2         2.2          4.5         1.5 versicolor
## comunidade 70           5.6         2.5          3.9         1.1 versicolor
## comunidade 71           5.9         3.2          4.8         1.8 versicolor
## comunidade 72           6.1         2.8          4.0         1.3 versicolor
## comunidade 73           6.3         2.5          4.9         1.5 versicolor
## comunidade 74           6.1         2.8          4.7         1.2 versicolor
## comunidade 75           6.4         2.9          4.3         1.3 versicolor
## comunidade 76           6.6         3.0          4.4         1.4 versicolor
## comunidade 77           6.8         2.8          4.8         1.4 versicolor
## comunidade 78           6.7         3.0          5.0         1.7 versicolor
## comunidade 79           6.0         2.9          4.5         1.5 versicolor
## comunidade 80           5.7         2.6          3.5         1.0 versicolor
## comunidade 81           5.5         2.4          3.8         1.1 versicolor
## comunidade 82           5.5         2.4          3.7         1.0 versicolor
## comunidade 83           5.8         2.7          3.9         1.2 versicolor
## comunidade 84           6.0         2.7          5.1         1.6 versicolor
## comunidade 85           5.4         3.0          4.5         1.5 versicolor
## comunidade 86           6.0         3.4          4.5         1.6 versicolor
## comunidade 87           6.7         3.1          4.7         1.5 versicolor
## comunidade 88           6.3         2.3          4.4         1.3 versicolor
## comunidade 89           5.6         3.0          4.1         1.3 versicolor
## comunidade 90           5.5         2.5          4.0         1.3 versicolor
## comunidade 91           5.5         2.6          4.4         1.2 versicolor
## comunidade 92           6.1         3.0          4.6         1.4 versicolor
## comunidade 93           5.8         2.6          4.0         1.2 versicolor
## comunidade 94           5.0         2.3          3.3         1.0 versicolor
## comunidade 95           5.6         2.7          4.2         1.3 versicolor
## comunidade 96           5.7         3.0          4.2         1.2 versicolor
## comunidade 97           5.7         2.9          4.2         1.3 versicolor
## comunidade 98           6.2         2.9          4.3         1.3 versicolor
## comunidade 99           5.1         2.5          3.0         1.1 versicolor
## comunidade 100          5.7         2.8          4.1         1.3 versicolor
## comunidade 101          6.3         3.3          6.0         2.5  virginica
## comunidade 102          5.8         2.7          5.1         1.9  virginica
## comunidade 103          7.1         3.0          5.9         2.1  virginica
## comunidade 104          6.3         2.9          5.6         1.8  virginica
## comunidade 105          6.5         3.0          5.8         2.2  virginica
## comunidade 106          7.6         3.0          6.6         2.1  virginica
## comunidade 107          4.9         2.5          4.5         1.7  virginica
## comunidade 108          7.3         2.9          6.3         1.8  virginica
## comunidade 109          6.7         2.5          5.8         1.8  virginica
## comunidade 110          7.2         3.6          6.1         2.5  virginica
## comunidade 111          6.5         3.2          5.1         2.0  virginica
## comunidade 112          6.4         2.7          5.3         1.9  virginica
## comunidade 113          6.8         3.0          5.5         2.1  virginica
## comunidade 114          5.7         2.5          5.0         2.0  virginica
## comunidade 115          5.8         2.8          5.1         2.4  virginica
## comunidade 116          6.4         3.2          5.3         2.3  virginica
## comunidade 117          6.5         3.0          5.5         1.8  virginica
## comunidade 118          7.7         3.8          6.7         2.2  virginica
## comunidade 119          7.7         2.6          6.9         2.3  virginica
## comunidade 120          6.0         2.2          5.0         1.5  virginica
## comunidade 121          6.9         3.2          5.7         2.3  virginica
## comunidade 122          5.6         2.8          4.9         2.0  virginica
## comunidade 123          7.7         2.8          6.7         2.0  virginica
## comunidade 124          6.3         2.7          4.9         1.8  virginica
## comunidade 125          6.7         3.3          5.7         2.1  virginica
## comunidade 126          7.2         3.2          6.0         1.8  virginica
## comunidade 127          6.2         2.8          4.8         1.8  virginica
## comunidade 128          6.1         3.0          4.9         1.8  virginica
## comunidade 129          6.4         2.8          5.6         2.1  virginica
## comunidade 130          7.2         3.0          5.8         1.6  virginica
## comunidade 131          7.4         2.8          6.1         1.9  virginica
## comunidade 132          7.9         3.8          6.4         2.0  virginica
## comunidade 133          6.4         2.8          5.6         2.2  virginica
## comunidade 134          6.3         2.8          5.1         1.5  virginica
## comunidade 135          6.1         2.6          5.6         1.4  virginica
## comunidade 136          7.7         3.0          6.1         2.3  virginica
## comunidade 137          6.3         3.4          5.6         2.4  virginica
## comunidade 138          6.4         3.1          5.5         1.8  virginica
## comunidade 139          6.0         3.0          4.8         1.8  virginica
## comunidade 140          6.9         3.1          5.4         2.1  virginica
## comunidade 141          6.7         3.1          5.6         2.4  virginica
## comunidade 142          6.9         3.1          5.1         2.3  virginica
## comunidade 143          5.8         2.7          5.1         1.9  virginica
## comunidade 144          6.8         3.2          5.9         2.3  virginica
## comunidade 145          6.7         3.3          5.7         2.5  virginica
## comunidade 146          6.7         3.0          5.2         2.3  virginica
## comunidade 147          6.3         2.5          5.0         1.9  virginica
## comunidade 148          6.5         3.0          5.2         2.0  virginica
## comunidade 149          6.2         3.4          5.4         2.3  virginica
## comunidade 150          5.9         3.0          5.1         1.8  virginica

10.4.3 Removendo o nome das linhas

Para remover o nome das linhas, ao invés de usar NA, usa-se NULL.

row.names(iris)<-NULL

iris
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica

11 Tratando sequências de informações

Há situações onde o desejado é apenas criar uma sequência de informações, sejam estas seguindo uma ordem ou não. De certa forma, muita coisa apresentada aqui já foi a criação de sequências de informações. Agora, serão apresentados comandos básicos para a maioria das situações envolvendo a criação de sequências de informações.

11.1 Pacotes exigidos

library(tidyverse)

11.2 Carregando os datasets utilizados

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld
data(iris) # Dataset sobre comprimento e largura de sépalas e de pétalas de 3 espécies de plantas

head(iris) # Visualizando os dados
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

11.3 Sequências sem repetição

Sequências sem repetições não seguem uma ordem ou algorítimo, então dependem unicamente de quem a projeta. O comando mais usado, e também o mais simples, é o comando c(), do pacote base.

c(1,7,"a","%",89)
## [1] "1"  "7"  "a"  "%"  "89"

11.4 Repetições de valores

11.4.1 Repetição de apenas um valor

A função rep() cria uma repetição de valores, seguindo uma sequência e ordem pré-determinadas na própria função. Para o exemplo, a palavra Boana albomarginata será repetida 8 vezes.

rep("Boana albomarginata", 8)
## [1] "Boana albomarginata" "Boana albomarginata" "Boana albomarginata"
## [4] "Boana albomarginata" "Boana albomarginata" "Boana albomarginata"
## [7] "Boana albomarginata" "Boana albomarginata"

11.4.2 Repetição de mais de um valor

Semelhante à situação anterior, mas dessa vez com também a espécie Allobates olfersioides.

rep(c("Boana albomarginata","Allobates olfersioides"),8)
##  [1] "Boana albomarginata"    "Allobates olfersioides" "Boana albomarginata"   
##  [4] "Allobates olfersioides" "Boana albomarginata"    "Allobates olfersioides"
##  [7] "Boana albomarginata"    "Allobates olfersioides" "Boana albomarginata"   
## [10] "Allobates olfersioides" "Boana albomarginata"    "Allobates olfersioides"
## [13] "Boana albomarginata"    "Allobates olfersioides" "Boana albomarginata"   
## [16] "Allobates olfersioides"

Contudo, a repetição não separou uma sequência para ambas as espécies. Para informar que cada espécie deve aparecer primeiro 8 vezes e em seguida a outra, também oito vezes, usa-se o comando each=.

rep(c("Boana albomarginata","Allobates olfersioides"),each=8)
##  [1] "Boana albomarginata"    "Boana albomarginata"    "Boana albomarginata"   
##  [4] "Boana albomarginata"    "Boana albomarginata"    "Boana albomarginata"   
##  [7] "Boana albomarginata"    "Boana albomarginata"    "Allobates olfersioides"
## [10] "Allobates olfersioides" "Allobates olfersioides" "Allobates olfersioides"
## [13] "Allobates olfersioides" "Allobates olfersioides" "Allobates olfersioides"
## [16] "Allobates olfersioides"

11.4.3 Repetição de mais de um valor e com nº de repetições para cada valor

Nesse exemplo, as espécies Boana atlantica, Scinax x-signatus e Pristimantis paulodutrai serão colocados em repetição, mas dessa vez cada um se repetirá um n° específico de vezes. Para isso, basta apenas usar o comando c().

rep(c("Boana atlantica","Scinax x-signatus","Pristimantis paulodutrai"),c(7,2,20))
##  [1] "Boana atlantica"          "Boana atlantica"         
##  [3] "Boana atlantica"          "Boana atlantica"         
##  [5] "Boana atlantica"          "Boana atlantica"         
##  [7] "Boana atlantica"          "Scinax x-signatus"       
##  [9] "Scinax x-signatus"        "Pristimantis paulodutrai"
## [11] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [13] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [15] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [17] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [19] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [21] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [23] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [25] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [27] "Pristimantis paulodutrai" "Pristimantis paulodutrai"
## [29] "Pristimantis paulodutrai"

11.5 Sequências de valores

Ao contrário das repetições, as sequências seguem um contínuo, de um valor mínimo a um valor máximo, seguindo uma sequência de intervalos, pré-determinados na função. Nesse exemplo, será criada uma sequência numérica, de 30 a 50, de 2 em 2. Na função seq(), do pacote base, o primeiro número representa o valor mínimo, o segundo número rpresenta o valor máximo, e o terceiro número representa a sequência dos intervalos.

seq(30,50,2)
##  [1] 30 32 34 36 38 40 42 44 46 48 50

11.6 Sequências de palavras ordenadas

Em situações em que o que se deseja criar uma sequência de palavras, estas seguidas por números, duas funções úteis e semelhanntes são as funções paste() e paste0(), ambas do pacote backports.

11.6.1 paste()

Na função paste(), primeiro informa-se o prefixo dos valores das sequências, e em seguida a sequência de números que funcioarão como sufixo. Para este exemplo, será crriada um sequência de valores, de espécie1 até espécie15.

paste("espécie",1:15)
##  [1] "espécie 1"  "espécie 2"  "espécie 3"  "espécie 4"  "espécie 5" 
##  [6] "espécie 6"  "espécie 7"  "espécie 8"  "espécie 9"  "espécie 10"
## [11] "espécie 11" "espécie 12" "espécie 13" "espécie 14" "espécie 15"

Também é possível criar a sequência contrária, apenas alterndo a sequência.

paste("espécie",15:1)
##  [1] "espécie 15" "espécie 14" "espécie 13" "espécie 12" "espécie 11"
##  [6] "espécie 10" "espécie 9"  "espécie 8"  "espécie 7"  "espécie 6" 
## [11] "espécie 5"  "espécie 4"  "espécie 3"  "espécie 2"  "espécie 1"

Além de números, é possível utilizar palavras como sufixo. Nesse exemplo, usando a função rep(), serão criadas a partir de repetições.

paste("espécie",rep(c("de Mata Atlântica","amazônica","da Caatinga"),c(4,16,9)))
##  [1] "espécie de Mata Atlântica" "espécie de Mata Atlântica"
##  [3] "espécie de Mata Atlântica" "espécie de Mata Atlântica"
##  [5] "espécie amazônica"         "espécie amazônica"        
##  [7] "espécie amazônica"         "espécie amazônica"        
##  [9] "espécie amazônica"         "espécie amazônica"        
## [11] "espécie amazônica"         "espécie amazônica"        
## [13] "espécie amazônica"         "espécie amazônica"        
## [15] "espécie amazônica"         "espécie amazônica"        
## [17] "espécie amazônica"         "espécie amazônica"        
## [19] "espécie amazônica"         "espécie amazônica"        
## [21] "espécie da Caatinga"       "espécie da Caatinga"      
## [23] "espécie da Caatinga"       "espécie da Caatinga"      
## [25] "espécie da Caatinga"       "espécie da Caatinga"      
## [27] "espécie da Caatinga"       "espécie da Caatinga"      
## [29] "espécie da Caatinga"

11.6.2 paste0()

A função paste0() é semelhante à função paste(), mas é possível controlar os espaços entre os prefixos e os sufixos.

paste0("espécie",1:15)
##  [1] "espécie1"  "espécie2"  "espécie3"  "espécie4"  "espécie5"  "espécie6" 
##  [7] "espécie7"  "espécie8"  "espécie9"  "espécie10" "espécie11" "espécie12"
## [13] "espécie13" "espécie14" "espécie15"
paste0("espécie ",1:15)
##  [1] "espécie 1"  "espécie 2"  "espécie 3"  "espécie 4"  "espécie 5" 
##  [6] "espécie 6"  "espécie 7"  "espécie 8"  "espécie 9"  "espécie 10"
## [11] "espécie 11" "espécie 12" "espécie 13" "espécie 14" "espécie 15"

11.7 Criando amostras aleatórias

Criar amostras aleatórias são situações em que é necessário trabalhar com um conjunto de dados, mas que deseja-se fugir de algum viés. É extremamente útil em testes estatísticos de hípoteses e/ou para testar alguma condição de uma base de ados. no R, para criar amostras aleatórias, basta apenas usar a função sample(), do pacote base. Na função sample()0, é informado o intervalo dos valores, e o tamanho da amostra, com o comando size=.

11.7.1 Amostram sem repetição

Nesse exemplo, será criada uma amostra com 10 valores, estes podendo variar de 1 a 20.

sample(1:20,size=10)
##  [1]  5  4 10  6 12  7 18  1 14  2

11.7.2 Amostras com repetição

Há duas possíveis situações onde se deseja que uma amostra tenha repetições:

  • Quando é vantajoso que os valores sejam repetidos, devido à alguma exigência;

  • Quando o intervalo dos valores da amostra são menores que o tamanho da amostra.

Nestes dois casos, basta apenas executar o comando replace=TRUE, para indicar que deve haver repetição dos valores. Nesse exemplo, será feito como no exemplo anterior, mas com uma amostra contendo 30 valores.

sample(1:20,size=30,replace=TRUE)
##  [1]  5  1 18  4 20  1 15  9  3  1 14 17 14  9  2  4 14 16 18 19  5  8  7 15 18
## [26]  6  6  1  9  9

11.7.3 Amostras para valores categóricos

As amostras não se restringem aos valores numéricos contínuos, mas também aos valores categóricos. Uma situação em que é útil fazer esse tipo de amostragem é para escolher, aleatoriamente, 10 de 30 candidatos para fazer uma pesquisa, a fim de prezar pela aleatoriedade. Nesse exemplo, será feita uma amostra com os dados da cor da pele dos personagens, para posteriormente analisar como se dá a distribuição dos dados de altura dos personagens com estas cor da pele.

amostra_cordepele<-starwars$skin_color %>%
  sample(size=10)

amostra_cordepele
##  [1] "green"               "orange"              "yellow"             
##  [4] "fair, green, yellow" "fair"                "brown, white"       
##  [7] "fair"                "green"               "fair"               
## [10] "white, red"

Com a amostrada criada, será selecionado isto do dataset original, e assim criado um histograma.

starwars %>% 
  filter(skin_color %in% amostra_cordepele) %>% 
  ggplot(aes(mass))+
  geom_histogram(color="black",fill="#FFAA52")+
  labs(x="massa (kg)",
       y="ocorrência")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

Como mostrado no gráfico, na amostra coletada, a maior parte das ocorrências tiveram uma massa na faixa de ~70-90 Kg, sendo 80 Kg o ápice das ocorrências. Se fosse feito novamente, tería-se outra distribuição, pois seria outra amostra, mesmo que um pouco semelhante.

amostra_cordepele2<-starwars$skin_color %>%
  sample(size=10)

amostra_cordepele2
##  [1] "pale"        "green"       "white, blue" "green"       "white"      
##  [6] "fair"        "fair"        "orange"      "blue"        "orange"
starwars %>% 
  filter(skin_color %in% amostra_cordepele2) %>% 
  ggplot(aes(mass))+
  geom_histogram(color="black",fill="#FFAA52")+
  labs(x="massa (kg)",
       y="ocorrência")+
  theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white"))

11.8 Sequência de laços de repetição

Sequências de repetição não condicionais apenas repetem um conjunto de tarefas de uma vez, não importando nenhuma suposta condição. São operações muito utilizadas quando você possui uma quantidade de tarefas a serem repetidas, baseando-se nos elementos de um conjunto de dados. Exemplo clássico: você possui uma base de dados com mais de 30 variáveis, sendo estas 1 é uma variável categória com dados binários (1 e 0) para a presença (1) ou não-presença (0) de um animal em uma região (lembrando que “ausência”, na ecologia, é algo dificil de ser mensurado, então “não presença” é um termo mais adequado), as outras 29 são variáveis numéricas contínuas sobre variáveis ambientais do local, e o seu trabalho é calcular a regressão logística simples da influência de cada uma das variáveis no comportamento da variável categórica. Existe o jeito padrão, que seria apenas repetir a operação, substituíndo apenas a variável no processo. Contudo, um jeito que poupa tempo são criando laços de repetição.

Laço de repetição for está na base da lógica de programação, não apenas da linguagem R, mas também de outras linguagens de programação. O que o laço for() faz é pegar os elementos em um vetor, e em seguida executar uma sequência de operações postas no comando, gerando assim uma sequência de resultados. normalmente, para informmar que serão trabalhados com os elementos de um vetor, usa-se o argumento i para o vetor, sendo então i in 1:10 significa que serão feitas operações com todos os numéros entre 1 a 10.

Para exemplificar, nesse exemplo abaixo serão printados os numéros que aparecem numa sequência de números de 1 a 10. na função for(), importante notar que os comandos estarão entre as chaves { }, enquanto que o vetor e a condição estarão entre os parênteses ( ). outra coisa importante é que, caso deseje-se que os comandos pareçam como resultados, como outputs, é necessário usar a função print().

for(i in 1:10){
  
  print(i)
  
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10

Para exemplificar melhor o que se pode ser feito, agora cada elemento do vetor será elevado ao quadrado e, em seguida, ao cubp.

for(i in 1:10){
  
  print(i^2)
  
  print(i^3)
}
## [1] 1
## [1] 1
## [1] 4
## [1] 8
## [1] 9
## [1] 27
## [1] 16
## [1] 64
## [1] 25
## [1] 125
## [1] 36
## [1] 216
## [1] 49
## [1] 343
## [1] 64
## [1] 512
## [1] 81
## [1] 729
## [1] 100
## [1] 1000

Agora será feita uma coisa mais avançada: com o dataset iris, será feito um gráfico de boxplot sobre cada uma das variáveis contínuas, sobre o comprimento e largura das sépalas e pétalas para a variável categórica das espécies. Primeiramente, foram selecionadas apenas as variáveis númericas, utilizando a função select_if() com o comando is.numeric no dataser. Em seguida, dentro dos comandos, foi criado os comandos em ggplot, onde na variável dependente, a variável Y, foi utilizado o comando i. para indicar que estariam sendo trabalhados as variáveis selecionadas. Por fim, foi adicionado um print(), para plotar os gráficos como output.

for(i in iris %>% select_if(is.numeric)){
  
  print(iris %>% 
          ggplot(aes(Species,i,fill=Species))+
          geom_boxplot(color="black")+
          labs(x="Espécies",
               y=colnames(iris),
               fill="Espécies")+
          theme(text=element_text(family="TimesNewRoman"),
            title=element_text(color="black",size=15),
            axis.text = element_text(color="black",size=10),
            axis.title = element_text(color="black",size=10),
            panel.grid=element_line(color="grey75",linetype="dashed",size=0.7),
            axis.line=element_blank(),
            plot.background=element_rect(fill="white",color="white"),
            panel.background=element_rect(fill="white"),
            panel.border = element_rect(colour = "black",fill=NA,size=0.5),
            legend.key= element_rect(color="white",fill="white")))
  
}

Sabendo onde posicionar o argumento i e o que fazer com ele, é possível fazer várias tarefas de uma vez. Outro exemplo, agora estatístico, é testar se há diferença nos comprimentos e larguras das sépalas e pétalas em relação à espécie. Para isso, será feito um teste ANOVA, utilizando o for() para fazer as repetições.

for(i in iris %>% select_if(is.numeric)){
  
  print(aov(i~Species,data=iris) %>% 
          summary())
  
}
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Species       2  63.21  31.606   119.3 <2e-16 ***
## Residuals   147  38.96   0.265                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Species       2  11.35   5.672   49.16 <2e-16 ***
## Residuals   147  16.96   0.115                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Species       2  437.1  218.55    1180 <2e-16 ***
## Residuals   147   27.2    0.19                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Species       2  80.41   40.21     960 <2e-16 ***
## Residuals   147   6.16    0.04                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como observado acima, há uma influência da espécie para a largura e o comprimento das sépalas e das pétalas (p<0,01). Contudo, vale ressaltar também que a ordem com que os elementos aparecem correspondem com a órdem dos elementos no vetor. Por isso, é importante correcer a ordem dos elementos no vetor que estão sendo trabalhados.

11.8.1 Criação de objetos com laço for

Na seção sobre Alterando a ordem dos valores das variáveis de um dataset, para alterar a órdem dos valores de uma órdem aleatória, foi criado objetos filtrando os valores da variável. Mas foram filtrados 1 por vez. Isso não é nenhum pouco prático, mas é possível criar os mesmos objetos de forma mais rápida utilizando o laço for. Para isso, será criado um vetor contendo os valores da variável, através da função unique() que exclui valores repitidos, um vetor contendo os objetos para onde as filtragens irão, através da função paste0(), e a filtragem, coma função filter() na função assign(), que cria novos objetos contendo valores especificados na fuunção, tudo no laço for.

for(i in starwars$hair_color %>% unique()){
  
  objetos <- paste0(i, "_objeto")
  
  assign(objetos, 
         starwars %>%
           filter(hair_color %in% i))
}

Com os objetos já criados, basta apenas reordena-los, através da função rbind().

starwars_reordenado <- rbind(blond_objeto,blonde_objeto,auburn_objeto,`auburn, grey_objeto`,`auburn, white_objeto`,brown_objeto,`brown, grey_objeto`,black_objeto,grey_objeto,white_objeto,unknown_objeto,none_objeto, NA_objeto)

starwars_reordenado
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 Anakin Sky…    188    84 blond   fair    blue       41.9 male  mascu… Tatooi…
##  3 Finis Valo…    170    NA blond   fair    blue       91   male  mascu… Corusc…
##  4 Zam Wesell     168    55 blonde  fair, … yellow     NA   fema… femin… Zolan  
##  5 Mon Mothma     150    NA auburn  fair    blue       48   fema… femin… Chandr…
##  6 Wilhuff Ta…    180    NA auburn… fair    blue       64   male  mascu… Eriadu 
##  7 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
##  8 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  9 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
## 10 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

Desta forma, o trabalho fica mais prático e automatizado.

12 Tratando caracteres dos dados (strings)

Ao trabalhar com dados que não são numéricos, como os dados caracteres (formato charater), é comum sistuações onde os dados em si não são os mesmos, mas apresentam certas semelhanças nos caracteres, nos seus strings. Exemplo: em uma base de dados, há uma variável para as cores encontrados em anfíbios.

data.frame(cor=c("verde","amarelo","marrom","verde, amarelo","amarelo, marrom","preto","amarelo, preto"),indivíduo=paste0("indivíduo ",1:7))
##               cor   indivíduo
## 1           verde indivíduo 1
## 2         amarelo indivíduo 2
## 3          marrom indivíduo 3
## 4  verde, amarelo indivíduo 4
## 5 amarelo, marrom indivíduo 5
## 6           preto indivíduo 6
## 7  amarelo, preto indivíduo 7

Note que em uma mesma observação pode haver mais de uma cor. Se o objetivo fosse filtrar os indivíduos com cor amarelo, por exemplo, ao usar a função filter() para as ocorrências, os indivíduos 4, 5 e 7 ficariam de fora. Situações como estas podem ocorrer, onde a informação relevante não é a observação completa, mas strings específicos da observação. Para isso, é necessário filtrar os strings. Atualmente na linguagem de programação R, o pacote stringr, que pertence ao grupo do Tidyverse, é o que apresenta as principais ferramentas para estas situações.

Contudo, antes de começar, é importante ressalatar alguns pontos: assim como em outras linguagens de programação orientadas a objetos, na linguagem R, a forma como um string é escrito importa, então a não é o mesmo de A, assim como 2 não é a mesma coisa de 2.0. Procure atentar-se a isso quando for trabalhar com strings.

12.1 Pacotes exigidos

library(tidyverse)

12.2 Carregando os datasets

data(starwars) # Dataset sobre personagens da franquia Starwars

head(starwars) # Visualizando os dados
## # A tibble: 6 × 14
##   name         height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##   <chr>         <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
## 1 Luke Skywal…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
## 2 C-3PO           167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
## 3 R2-D2            96    32 <NA>    white,… red        33   none  mascu… Naboo  
## 4 Darth Vader     202   136 none    white   yellow     41.9 male  mascu… Tatooi…
## 5 Leia Organa     150    49 brown   light   brown      19   fema… femin… Aldera…
## 6 Owen Lars       178   120 brown,… light   blue       52   male  mascu… Tatooi…
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.3 Contando a quantidade de strings nas observações

É possível contar quantos strings um vector inteiro possui, assim como também seus valores individais, através da função str_length(), do pacote stringr.

12.3.1 De uma variável inteira

Para contar TODOS os strings de uma variável de um dataset, basta apenas selecionar a variável, com a função select(), do pacote dplyr, e em seguida utilizar a função str_length().

starwars %>% 
  select(skin_color) %>% 
  str_length()
## [1] 869

12.3.2 Para cada valor individual

Caso o que se deseje for contar a quantidade de strings para cada valor de uma variável, ao invés de usar a função select(), usa-se o operador $. Essa diferença ocorre porquê, ao usar a função select(), seleciona-se o formato daquele dataset (no caso do starwars, o formato tibble). Já com o operador $, a variável se trandforma num vetor em formato character.

starwars$skin_color %>% str_length()
##  [1]  4  4 11  5  5  5  5 10  5  4  4  4  7  4  5 16  4  4  5  4  4  5  5  4  5
## [26] 12  4  4  5  4  4 13  4  6  4  5  4 10  9  4  4  3  4  4 10 11 19  4  4  5
## [51]  5  4  4  5  6  4  4  5  4  5  6  6  5  4  3  3 19  5  4  4  4 10 11 11  4
## [76] 16 12  5  5  4  4  4  5  5  4  7  5

12.4 Selecionando um grupo específicos de strings de um vetor

Uma coisa interessante dos strings é que é possível selecionar apenas uma parcelas de strings de um vetor. Exemplo: existe uma variável contendo os dados de espécies seguidos de um _local, e deseja-se extrair apenas o nome das espécies. Para isso, usa-se a função str_sub().

12.4.1 Selecionando baseado nos primeios strings

Com o argumento start=, informa-se a partir de qual string começará a seleção. Nesse caso, começará a partir do 4º string.

starwars$hair_color %>% str_sub(start=4)
##  [1] "nd"         NA           NA           "e"          "wn"        
##  [6] "wn, grey"   "wn"         NA           "ck"         "urn, white"
## [11] "nd"         "urn, grey"  "wn"         "wn"         NA          
## [16] NA           "wn"         "wn"         "te"         "y"         
## [21] "ck"         "e"          "e"          "ck"         "e"         
## [26] "e"          "urn"        "wn"         "wn"         "e"         
## [31] "wn"         "e"          "nd"         "e"          "e"         
## [36] "e"          "wn"         "ck"         "e"          "ck"        
## [41] "ck"         "e"          "e"          "e"          "e"         
## [46] "e"          "e"          "e"          "te"         "e"         
## [51] "ck"         "e"          "e"          "e"          "e"         
## [56] "e"          "ck"         "wn"         "wn"         "e"         
## [61] "ck"         "ck"         "wn"         "te"         "ck"        
## [66] "ck"         "nde"        "e"          "e"          "e"         
## [71] "te"         "e"          "e"          "e"          "e"         
## [76] "e"          "e"          "wn"         "wn"         "e"         
## [81] "e"          "ck"         "wn"         "wn"         "e"         
## [86] "nown"       "wn"

12.4.2 Selecionando baseado nos últimos strings

O mesmo pode ser feito para os últimos strings, bastando apenas usar o argumento end=, informa-se a partir de qual string começará a seleção, mas agora selecionando os strings que antecedem a posição. Nesse caso, começará a partir do 3º string.

starwars$hair_color %>% str_sub(end=3)
##  [1] "blo" NA    NA    "non" "bro" "bro" "bro" NA    "bla" "aub" "blo" "aub"
## [13] "bro" "bro" NA    NA    "bro" "bro" "whi" "gre" "bla" "non" "non" "bla"
## [25] "non" "non" "aub" "bro" "bro" "non" "bro" "non" "blo" "non" "non" "non"
## [37] "bro" "bla" "non" "bla" "bla" "non" "non" "non" "non" "non" "non" "non"
## [49] "whi" "non" "bla" "non" "non" "non" "non" "non" "bla" "bro" "bro" "non"
## [61] "bla" "bla" "bro" "whi" "bla" "bla" "blo" "non" "non" "non" "whi" "non"
## [73] "non" "non" "non" "non" "non" "bro" "bro" "non" "non" "bla" "bro" "bro"
## [85] "non" "unk" "bro"

12.4.3 Selecionado um intervalo específico de strings

Alternativamente, é possil selecionar um intervalo específico, informando a posição em que a selecão começará e a posição onde a seleção terminará. Nesse caso, começará no 2º string e terminará no 4º.

starwars$hair_color %>% str_sub(2,4)
##  [1] "lon" NA    NA    "one" "row" "row" "row" NA    "lac" "ubu" "lon" "ubu"
## [13] "row" "row" NA    NA    "row" "row" "hit" "rey" "lac" "one" "one" "lac"
## [25] "one" "one" "ubu" "row" "row" "one" "row" "one" "lon" "one" "one" "one"
## [37] "row" "lac" "one" "lac" "lac" "one" "one" "one" "one" "one" "one" "one"
## [49] "hit" "one" "lac" "one" "one" "one" "one" "one" "lac" "row" "row" "one"
## [61] "lac" "lac" "row" "hit" "lac" "lac" "lon" "one" "one" "one" "hit" "one"
## [73] "one" "one" "one" "one" "one" "row" "row" "one" "one" "lac" "row" "row"
## [85] "one" "nkn" "row"

12.5 Combinando strings

No caso de dois conjunto de dados contendo dados, como character, e o que se deseja for transformar tudo isso em uma coisa só, basta apenas usar a funçã str_c(), bastando apenas indicar no comando sep=o que irá separa-los. Nesse caso, apenas um .

dataset_character_1 <- "basta apenas usar"

dataset_character_2 <- "a função str_c()"

str_c(dataset_character_1, dataset_character_2, sep=" ")
## [1] "basta apenas usar a função str_c()"

12.6 Substituindo strings

É comum os casos onde uma base de dados possuem observações contendo mais de um valor, separados com algum caractére, e este caractére está errado, como ; no lugar de uma ,, e vice-versa. Para estas situações, é possível alterar as strings através da função str_replace(). Para esse exemplo, no dataset Starwars, as observações as , serão substituídas por &, utilizando a função mutate.

starwars_strreplace <- starwars %>% 
  mutate(hair_color = str_replace(hair_color,
                                  ", ",
                                  " & "),
         skin_color = str_replace(hair_color,
                                  ", ",
                                  " & "))

starwars_strreplace
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   blond   blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    <NA>    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    <NA>    red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    none    yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   brown   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown … brown … blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   brown   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    <NA>    red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   black   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… auburn… blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

No caso de alterar toda a base de daods, basta apenas usar um laço for. Nesse caso, foi criada um noo dataset contendo todas as informações do dataset starwars, e em seguida usado a função str_replace.

for(i in colnames(starwars_strreplace <- starwars)){
  starwars_strreplace[[i]] <- starwars_strreplace[[i]] %>% 
    str_replace(", ", " & ")
}

starwars_strreplace
## # A tibble: 87 × 14
##    name        height mass  hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>       <chr>  <chr> <chr>   <chr>   <chr>   <chr>   <chr> <chr>  <chr>  
##  1 Luke Skywa… 172    77    blond   fair    blue    19      male  mascu… Tatooi…
##  2 C-3PO       167    75    <NA>    gold    yellow  112     none  mascu… Tatooi…
##  3 R2-D2       96     32    <NA>    white … red     33      none  mascu… Naboo  
##  4 Darth Vader 202    136   none    white   yellow  41.9    male  mascu… Tatooi…
##  5 Leia Organa 150    49    brown   light   brown   19      fema… femin… Aldera…
##  6 Owen Lars   178    120   brown … light   blue    52      male  mascu… Tatooi…
##  7 Beru White… 165    75    brown   light   blue    47      fema… femin… Tatooi…
##  8 R5-D4       97     32    <NA>    white … red     <NA>    none  mascu… Tatooi…
##  9 Biggs Dark… 183    84    black   light   brown   24      male  mascu… Tatooi…
## 10 Obi-Wan Ke… 182    77    auburn… fair    blue-g… 57      male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <chr>,
## #   vehicles <chr>, starships <chr>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.7 Selecionado observações baseado em strings

Na parte que foi falada sobre filtragem de observações,foi falado que a função filter() e derivadas, como a função `filter_all(), filtra observações baseado nos seus valores. O ponto é que, se o valor que você tentar filtrar não for exatamente como está na observação, não retornará o esperado. Em algumas situações, as observações podem contar mais de uma informação. Um exemplo disso seria um dataset sobre as espécies encontradas em diferentes localidades, onde cada linha é uma localidade, e na variável que contem as espécies, uma observação contém maus de uma espécie. Como então filtrar as observações que contém mais de uma espécie? Nessas situações, não se filtra a observação, mas sim um grupo específico de strings.

12.7.1 Filtrando um grupo de strings de uma variável

starwars
## # A tibble: 87 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172    77 blond   fair    blue       19   male  mascu… Tatooi…
##  2 C-3PO          167    75 <NA>    gold    yellow    112   none  mascu… Tatooi…
##  3 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  4 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  5 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  6 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  7 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  8 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  9 Biggs Dark…    183    84 black   light   brown      24   male  mascu… Tatooi…
## 10 Obi-Wan Ke…    182    77 auburn… fair    blue-g…    57   male  mascu… Stewjon
## # … with 77 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

No dataset starwars, as variáveis da cor do cabelo (hair_color) e cor da pele (skin_color) possuem observações com mais de uma cor. Num exemplo, como filtrar da variável da cor do cabelo os personagens com cor de cabelo marrom (brown), seja ela apenas ou mais alguma cor junto? Para estas questões, usa-se a função função str_detect(). Nessa função, basta apenas primeiro informar a variável desejada, e em seguida o grupo de strings desejados.

starwars %>% 
  filter(str_detect(hair_color,"brown"))
## # A tibble: 19 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Leia Organa    150    49 brown   light   brown        19 fema… femin… Aldera…
##  2 Owen Lars      178   120 brown,… light   blue         52 male  mascu… Tatooi…
##  3 Beru White…    165    75 brown   light   blue         47 fema… femin… Tatooi…
##  4 Chewbacca      228   112 brown   unknown blue        200 male  mascu… Kashyy…
##  5 Han Solo       180    80 brown   fair    brown        29 male  mascu… Corell…
##  6 Wedge Anti…    170    77 brown   fair    hazel        21 male  mascu… Corell…
##  7 Jek Tono P…    180   110 brown   fair    blue         NA male  mascu… Bestin…
##  8 Arvel Cryn…     NA    NA brown   fair    brown        NA male  mascu… <NA>   
##  9 Wicket Sys…     88    20 brown   brown   brown         8 male  mascu… Endor  
## 10 Qui-Gon Ji…    193    89 brown   fair    blue         92 male  mascu… <NA>   
## 11 Ric Olié       183    NA brown   fair    blue         NA <NA>  <NA>   Naboo  
## 12 Cordé          157    NA brown   light   brown        NA fema… femin… Naboo  
## 13 Cliegg Lars    183    NA brown   fair    blue         82 male  mascu… Tatooi…
## 14 Dormé          165    NA brown   light   brown        NA fema… femin… Naboo  
## 15 Tarfful        234   136 brown   brown   blue         NA male  mascu… Kashyy…
## 16 Raymus Ant…    188    79 brown   light   brown        NA male  mascu… Aldera…
## 17 Rey             NA    NA brown   light   hazel        NA fema… femin… <NA>   
## 18 Poe Dameron     NA    NA brown   light   brown        NA male  mascu… <NA>   
## 19 Padmé Amid…    165    45 brown   light   brown        46 fema… femin… Naboo  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.7.2 Filtrando mais de um grupo de strings de uma variável

Existe também a possibilidade de filtrar mais de um grupo de strings. Semelhante ao ue foi feito anteriormente, baste apenas usar um, entre aspas, um | a cada grupo de strings desejados. Nesse exemplo, como o que se deseja é filtrar as observações com as cores marrom e branca, usa-se "brown|white".

starwars %>% 
  filter(str_detect(hair_color,"brown|white"))
## # A tibble: 24 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Leia Organa    150    49 brown   light   brown        19 fema… femin… Aldera…
##  2 Owen Lars      178   120 brown,… light   blue         52 male  mascu… Tatooi…
##  3 Beru White…    165    75 brown   light   blue         47 fema… femin… Tatooi…
##  4 Obi-Wan Ke…    182    77 auburn… fair    blue-g…      57 male  mascu… Stewjon
##  5 Chewbacca      228   112 brown   unknown blue        200 male  mascu… Kashyy…
##  6 Han Solo       180    80 brown   fair    brown        29 male  mascu… Corell…
##  7 Wedge Anti…    170    77 brown   fair    hazel        21 male  mascu… Corell…
##  8 Jek Tono P…    180   110 brown   fair    blue         NA male  mascu… Bestin…
##  9 Yoda            66    17 white   green   brown       896 male  mascu… <NA>   
## 10 Arvel Cryn…     NA    NA brown   fair    brown        NA male  mascu… <NA>   
## # … with 14 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.7.3 Filtrando grupos de strings de mais de uma variável

Agora será filtrado as observações com os strings brown para a variável de cor do cabelo e os strings white para a cor de pele. Como falado na sessão de filtragem de observações, ao fazer seleção de mais de uma variável pela função filter(), os comandos & e | tem diferenças. Nesse caos, como podem ser observações contendo uma das condições ou as duas ao mesmo tempo, usará o comando | para os comandos para a função str_detect().

starwars %>% 
  filter(str_detect(hair_color,"brown") | str_detect(skin_color,"white"))
## # A tibble: 26 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 R2-D2           96    32 <NA>    white,… red        33   none  mascu… Naboo  
##  2 Darth Vader    202   136 none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Leia Organa    150    49 brown   light   brown      19   fema… femin… Aldera…
##  4 Owen Lars      178   120 brown,… light   blue       52   male  mascu… Tatooi…
##  5 Beru White…    165    75 brown   light   blue       47   fema… femin… Tatooi…
##  6 R5-D4           97    32 <NA>    white,… red        NA   none  mascu… Tatooi…
##  7 Chewbacca      228   112 brown   unknown blue      200   male  mascu… Kashyy…
##  8 Han Solo       180    80 brown   fair    brown      29   male  mascu… Corell…
##  9 Wedge Anti…    170    77 brown   fair    hazel      21   male  mascu… Corell…
## 10 Jek Tono P…    180   110 brown   fair    blue       NA   male  mascu… Bestin…
## # … with 16 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.7.4 Filtrando um grupo de strings para qualquer variável do dataset que o contenha

No caso de um grupo de strings de interesse estiver espalhado para várias variáveis, e ao invés de selecionar variável por variável, uma alternativa é utilizar o função any_vars(), junto com a função filter_all(), como já foi feito na sessão de filtragem, no começo dessa apostila. Nesse caso, serão selecionadas todas as observações que contiverem o grupo de strings fem, para selecionar tanto o sexo quanto o gênero feminino.

starwars %>% 
  filter_all(any_vars(str_detect(.,"fem")))
## # A tibble: 17 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Leia Organa    150  49   brown   light   brown        19 fema… femin… Aldera…
##  2 Beru White…    165  75   brown   light   blue         47 fema… femin… Tatooi…
##  3 Mon Mothma     150  NA   auburn  fair    blue         48 fema… femin… Chandr…
##  4 Shmi Skywa…    163  NA   black   fair    brown        72 fema… femin… Tatooi…
##  5 Ayla Secura    178  55   none    blue    hazel        48 fema… femin… Ryloth 
##  6 Adi Gallia     184  50   none    dark    blue         NA fema… femin… Corusc…
##  7 Cordé          157  NA   brown   light   brown        NA fema… femin… Naboo  
##  8 Luminara U…    170  56.2 black   yellow  blue         58 fema… femin… Mirial 
##  9 Barriss Of…    166  50   black   yellow  blue         40 fema… femin… Mirial 
## 10 Dormé          165  NA   brown   light   brown        NA fema… femin… Naboo  
## 11 Zam Wesell     168  55   blonde  fair, … yellow       NA fema… femin… Zolan  
## 12 Taun We        213  NA   none    grey    black        NA fema… femin… Kamino 
## 13 Jocasta Nu     167  NA   white   fair    blue         NA fema… femin… Corusc…
## 14 R4-P17          96  NA   none    silver… red, b…      NA none  femin… <NA>   
## 15 Shaak Ti       178  57   none    red, b… black        NA fema… femin… Shili  
## 16 Rey             NA  NA   brown   light   hazel        NA fema… femin… <NA>   
## 17 Padmé Amid…    165  45   brown   light   brown        46 fema… femin… Naboo  
## # … with 4 more variables: species <chr>, films <list>, vehicles <list>,
## #   starships <list>, and abbreviated variable names ¹​hair_color, ²​skin_color,
## #   ³​eye_color, ⁴​birth_year, ⁵​homeworld

12.7.5 Filtrando por exclusão de um grupo de strings

De forma semelhante à outras exclusões em filtragens de observações, basta apenas adicionar um ! a frente da função str_detect().

starwars %>% 
  filter(!str_detect(hair_color,"brown"))
## # A tibble: 63 × 14
##    name        height  mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex   gender homew…⁵
##    <chr>        <int> <dbl> <chr>   <chr>   <chr>     <dbl> <chr> <chr>  <chr>  
##  1 Luke Skywa…    172  77   blond   fair    blue       19   male  mascu… Tatooi…
##  2 Darth Vader    202 136   none    white   yellow     41.9 male  mascu… Tatooi…
##  3 Biggs Dark…    183  84   black   light   brown      24   male  mascu… Tatooi…
##  4 Obi-Wan Ke…    182  77   auburn… fair    blue-g…    57   male  mascu… Stewjon
##  5 Anakin Sky…    188  84   blond   fair    blue       41.9 male  mascu… Tatooi…
##  6 Wilhuff Ta…    180  NA   auburn… fair    blue       64   male  mascu… Eriadu 
##  7 Yoda            66  17   white   green   brown     896   male  mascu… <NA>   
##  8 Palpatine      170  75   grey    pale    yellow     82   male  mascu… Naboo  
##  9 Boba Fett      183  78.2 black   fair    brown      31.5 male  mascu… Kamino 
## 10 IG-88          200 140   none    metal   red        15   none  mascu… <NA>   
## # … with 53 more rows, 4 more variables: species <chr>, films <list>,
## #   vehicles <list>, starships <list>, and abbreviated variable names
## #   ¹​hair_color, ²​skin_color, ³​eye_color, ⁴​birth_year, ⁵​homeworld