créditos: @rstatsmemes, no twitter
tidyverseExistem 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.
%>%
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:
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:
%>% jogue farinha
%>% jogue ovos %>% jogue margarina
%>% jogue chocolate em pó %>% misture
%>% jogue em uma forma %>% leve ao forno
%>% ponha a coberturaPara 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.
$ 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)].
library(tidyverse)
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
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.
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
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
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
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
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
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.
É 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.
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.
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.
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().
library(tidyverse)
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
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
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
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
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
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
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.
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.
library(tidyverse)
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
Calculando o nº de linhas do dataset.
starwars %>%
summarise(ocorrência=n())
## # A tibble: 1 × 1
## ocorrência
## <int>
## 1 87
É 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().
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
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
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
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
Calculando a soma dos dados do comprimento das sépalas.
iris %>%
summarise(Soma=sum(Sepal.Length))
## Soma
## 1 876.5
Calculando a média dos dados do comprimento das sépalas.
iris %>%
summarise(Média=mean(Sepal.Length))
## Média
## 1 5.843333
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
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
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.
library(tidyverse)
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
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
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
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
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
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=).
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`
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
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
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=).
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
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
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=).
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
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
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
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.
library(tidyverse)
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
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"
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
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
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.
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
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.
library(tidyverse)
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
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
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
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
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
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().
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.
library(tidyverse)
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
É 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.
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"))
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"))
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"))
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"))
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.
library(tidyverse)
library(palmerpenguins) # para extrair os dados de pinguins
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
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.
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.
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.
Esse é exatamente o oposto do tópico anterior. Aqui também será
repetido o método com o arrange() e uma função
slice().
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.
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.
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.
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
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
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.
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
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
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
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.
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.
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.
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.
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.
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.
library(tidyverse)
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
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.
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
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
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
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
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
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.
library(tidyverse)
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
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"
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"
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"
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"
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
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.
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"
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"
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=.
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
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
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"))
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.
forNa 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.
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.
library(tidyverse)
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
É 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.
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
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
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().
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"
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"
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"
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()"
É 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
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.
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
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
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
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
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