Nessa aula daremos continuidade ao conteúdo, apresentando pacotes, data frames, importação e exportação de banco de dados, funções para bancos de dados e tratamento de dados. Porém, antes de aprofundarmos o conteúdo é preciso explicar os tipos de variáveis antes.
Para entender melhor o tipo de dados que podemos trabalhar em um DataFrame, precisamos conhecer dois tipos principais de variáveis:
As variáveis qualitativas são aquelas que representam categorias ou qualidades. Elas podem ser:
| Carros Alugados | Cor | Satisfação do Cliente |
|---|---|---|
| Carro A | Azul | Excelente |
| Carro B | Preto | Regular |
| Carro C | Verde | Péssimo |
| Carro D | Branco | Bom |
No R, esses tipos de variáveis são frequentemente representados como fatores.
As variáveis quantitativas são aquelas que podem ser medidas numericamente. Elas podem ser:
| Nome | Idade | Qtd. Irmãos | Peso | Altura |
|---|---|---|---|---|
| Carlos | 8 | 0 | 40.7 | 1.35 |
| Roberta | 36 | 4 | 75.6 | 1.76 |
| João | 27 | 1 | 97.8 | 1.84 |
| Manuela | 18 | 2 | 62.2 | 1.53 |
O Rstudio já possuí várias funções bases, mas os pacotes enriquecem o ambiente e servem para facilitar tarefas e aumentarem a a experiência com a linguagem. Nessa aula vocês vão aprender como instalar e usar alguns pacotes.
Instalar pacotes no R é um processo simples, é preciso usar a função
install.packages(), no argumento o pacote de sua escolha
deve estar entre aspas simples (’’). Após a instação é preciso usar a
função library() ou a função require() para
“chamar” os pacotes e poder usar as funções disponíveis em cada.
Para essa aula usaremos os seguintes pacotes:
O dplyr é o pacote principal do tidyverse para manipulação de dados. Ele facilita a filtragem, seleção, agrupamento, mutação e resumo de dados. Principais Funções:
filter(): Filtra linhas com base em condições.select(): Seleciona colunas.summarise(): Resumo de dados com estatísticas.group_by(): Agrupa dados para operações de resumo.Readr: Leitura de dados O readr é usado para ler arquivos de dados como CSVs de maneira rápida e eficiente, substituindo a função read.csv() do R base. Ele também pode lidar com outras extensões, como arquivos de texto delimitados.
Lubridade: facilita a manipulação de datas no R que pode ser bem desafiadora. Principais funções:
ymd(), mdy(), dmy():
formatação de data.year(), month(), day():
extrair informação das datas.Vamos instalar os pacotes:
# Método 1
install.packages('dplyr')
install.packages('lubridate')
install.packages('readr')
#Método 2
pacotes <- c('dplyr', 'lubridate', 'readr')
install.packages(pacotes)Também é possível instalar pacotes atráves do console e da interface do Rtudio.
Console:
Interface:
Data Frames são estruturas de dados, no formato de tabelas bidimensionais, são muito úteis para facilitar a visualização e a análise de dados. A seguir será possível aprender sobre a criação de data frames, quais são as suas utilidades e como alterar/manipular os seus dados.
Data frames são estruturados por meio de linhas e colunas, sendo bem
parecidos com matrizes, para criá-los é preciso usar a função
data.frame(). Vamos começar com alguns exercícios:
## X1.20
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
## 6 6
## 7 7
## 8 8
## 9 9
## 10 10
## 11 11
## 12 12
## 13 13
## 14 14
## 15 15
## 16 16
## 17 17
## 18 18
## 19 19
## 20 20
## x y z
## 1 1 6 11
## 2 2 7 12
## 3 3 8 13
## 4 4 9 14
## 5 5 10 15
É possível verificar a classe do seu objeto (que deve retornar como
“data.frame”) com a função class(). E também é possível
mostrar a estrutura do Data Frame, incluindo o tipo e o tamanho de cada
coluna, com a função str().
## [1] "data.frame"
## 'data.frame': 5 obs. of 3 variables:
## $ x: int 1 2 3 4 5
## $ y: int 6 7 8 9 10
## $ z: int 11 12 13 14 15
Agora vamos verificar qual a diferença entre um data frame e uma matriz.
# Criando vetores x, y, z com números inteiros
x <- c(1:5)
y <- c(6:10)
z <- c(11:15)
# Criando uma matriz com os vetores x, y, z como colunas.
# O argumento nrow=5, indica que a matriz terá 5 linhas e o byrow=FALSE, indica que os números vão ser ordenados pelas colunas.
matriz <- matrix(c(x, y, z), nrow=5, byrow=FALSE)
matriz ## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
## int [1:5, 1:3] 1 2 3 4 5 6 7 8 9 10 ...
## 'data.frame': 5 obs. of 3 variables:
## $ x: int 1 2 3 4 5
## $ y: int 6 7 8 9 10
## $ z: int 11 12 13 14 15
# Criando o vetor de caracteres (strings) com letras de 'a' a 'e'
x <- c("a","b","c","d","e")
# Criando um vetor numérico de 1 a 5
y <- c(1:5)
# Criando um vetor numérico de 6 a 10
z <- c(6:10)
# Gerando a matriz2 com os vetores x, y e z
matriz2 <- matrix(c(x, y, z), nrow=5, byrow=FALSE)
matriz## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
## x y z
## 1 a 1 6
## 2 b 2 7
## 3 c 3 8
## 4 d 4 9
## 5 e 5 10
## chr [1:5, 1:3] "a" "b" "c" "d" "e" "1" "2" "3" "4" "5" "6" "7" "8" "9" ...
## 'data.frame': 5 obs. of 3 variables:
## $ x: chr "a" "b" "c" "d" ...
## $ y: int 1 2 3 4 5
## $ z: int 6 7 8 9 10
Além da diferença notável de estrutura, matrizes só aceitam objetos da mesma classe na sua composição, sejam eles strings ou númericos. Enquanto dataframes aceitam variadas classes em sua composição (strings, numeráveis, operadores lógicos, entre outros). Como é possível observar no último comparativo, a matriz transformou os vetores int em vetores character.
Podemos utilizar algumas funções para obtermos dados do dataframe ou verificar alguma coluna, linha ou dado em específico.
Acessando dados: - Ao usar [] após o nome do seu
dataframe você pode acessar alguma linha, coluna ou dado em específico
do dataframe:
## x y z
## 1 a 1 6
## [1] "a" "b" "c" "d" "e"
## [1] 6 7 8
## [1] 6
Através desse método é possível alterar dados dentro do seu dataframe, veremos isso no decorrer da aula.
Também é possível acessar as colunas através do seu nome ao invés do
posicionamento, logo após o nome do dataframe usaremos o $
para ter acesso a coluna ou até mesmo para verificar os dados dela:
## [1] "a" "b" "c" "d" "e"
# Verifica a classe da coluna 'x' (deve ser "factor" ou "character" dependendo dos dados)
class(df2$x)## [1] "character"
## [1] 1 2 3 4 5
## [1] "integer"
Agora veremos algumas funções úteis para o seu dataframe:
as.character(): funções iniciadas com as.
podem converter dados de uma coluna, a função
as.character() pode transformar uma coluna int
em uma coluna chr.## [1] "1" "2" "3" "4" "5"
## [1] 1 2 3 4 5
head(): carrega as primeiras 6 linhas do seu dataframe,
mas é possível alterar o número de linhas que você quer visualizar.## x y z
## 1 a 1 6
## 2 b 2 7
## 3 c 3 8
tail(): carrega as últimas 6 linhas do seu
dataframe,também é possivel alterar o número de linhas que vocÊ quer
visualizar.## x y z
## 3 c 3 8
## 4 d 4 9
## 5 e 5 10
mean(): calcula a média de uma coluna do
dataframe.median(): calcula a mediana de uma coluna do
dataframe.## [1] 3
## [1] 3
summary(): resume os dados de cada coluna de um
dataframe, pode mostrar o tamanho, classe e modo em colunas de strings e
mostra dados estatísticos em colunas numéricas, como mínimo, máximo,
média, mediana e os seus demais quartis.## x y z
## Length:5 Min. :1 Min. : 6
## Class :character 1st Qu.:2 1st Qu.: 7
## Mode :character Median :3 Median : 8
## Mean :3 Mean : 8
## 3rd Qu.:4 3rd Qu.: 9
## Max. :5 Max. :10
sort(): ordena os dados da coluna em ordem crescente ou
decrescente.## [1] 10 9 8 7 6
## [1] 6 7 8 9 10
Objetivo: Criar um DataFrame contendo informações sobre 5 pessoas. Use as funções discutidas no código anterior para explorar e manipular os dados.
Criação de Dataframe:
Exemplo de dados:
| Nome | Idade | Altura_cm | Peso_kg |
|---|---|---|---|
| Ana | 25 | 165 | 68.4 |
| Bruno | 30 | 175 | 80.2 |
| Carla | 22 | 156 | 55.8 |
| Daniel | 35 | 187 | 90.7 |
| Elisa | 28 | 173 | 62.9 |
Exploração de dados:
Use a função str() para verificar a estrutura do DataFrame (tipos de dados, número de colunas e linhas).
Use summary() para obter um resumo estatístico das colunas numéricas do DataFrame.
Manipulação de dados:
Acesse os dados da terceira pessoa (Carla).
Acesse toda a coluna Altura_cm
Acesse os valores de Peso das duas primeiras pessoas.
Cálculos estatísticos:
Calcule a média e a mediana da coluna Idade.
Calcule a média e a mediana da coluna Peso.
Ordenação:
Ordene a coluna Altura_cm em ordem crescente.
Ordene a coluna Idade em ordem decrescente.
Visualização:
Mostre as primeiras 3 linhas do DataFrame.
Mostre as últimas 2 linhas do DataFrame.
Bancos de dados são essenciais para fazermos análises e manipulações
de dados. Então é importante saber como e onde você pode encontrar essas
bases de dados. O próprio R, assim como alguns pacotes, fornece algumas
bases de dados nativas. Você pode verficar quais são por meio da função
data(), que abrirá uma nova guia no Rstudio, na qual você
poderá ver o nome do banco de dados e uma breve descrição de cada um.
Para acessa-las basta digitar o nome da base e rodar o código. Por
exemplo, usando a base USArrests, nativa do Rstudio, que
traz informações sobre a taxa de crimes violentos por estado nos Estados
Unidos.
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
Com o R também podemos importar bases de dados externas de outras
fontes e diversos formatos de arquivos são aceitos (como .csv, .txt,
.xslx, etc) e serão importados como dataframes ou
datasets. Você pode encontrar bancos de dados gratuitos nos
seguintes sites: Kaggle,
Portal Brasileiro de Dados
Abertos, Portal da
Transparência, BuzzFeed disponível no
github, entre outros. Para importar esses dados é preciso baixar o
arquivo na mesma pasta do seu arquivo .R. Para fazer a leitura da base
de dados será usado a biblioteca readr. É possível usar as
seguintes funções para importar aquivos:
read.csv(): Importa dados de um arquivo .csv.read.table: Importa dados de um arquivo de texto
delimitado e cria um dataframe.read.xlsx()(do pacote readxl): Importa
dados de um arquivo Excel (.xlsx).Para exportar arquivos é possível usar as seguintes funções:
write.csv(): Exporta um dataframe para um arquivo
.csv.write.table(): Exporta um dataframe para um arquivo de
texto delimitado.Para importar os dados é necessário colocar no argumento da função o caminho para o arquivo, como no exemplo abaixo:
## Rows: 16598 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Name, Platform, Year, Genre, Publisher
## dbl (6): Rank, NA_Sales, EU_Sales, JP_Sales, Other_Sales, Global_Sales
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Também é possível importar dados através da interface do Rstudio, primeiro é preciso procurar o local onde você salvou o banco de dados e seguir o passo a passo:
Resultado:
Também é possível importar um banco de dados diretamente da internet. O que faremos agora para dar continuidade a aula:
Utilizaremos a maniputação de dados para fazer alterações, limpeza, organização e preparação do nosso banco de dados. Para tornar o processo de visualização mais simples e prático.
Primeiro iremos atribuir o nosso banco de dados a outro objeto, para termos um backup da base em caso de sem querer subscrevemos os dados.
Agora podemos verificar se o nosso banco de dados possui valores
nulos ou faltantes, eles podem atrapalhar todo o processo de
visualização, principalmente para fazer cálculos, pois retornam uma
resposta nula. É necessário usar a função is.na() para
verificarmos os valores faltantes.
## ano_campeonato data rodada estadio publico time_mandante time_visitante
## [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## tecnico_mandante tecnico_visitante colocacao_mandante colocacao_visitante
## [1,] FALSE FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE FALSE
## valor_equipe_titular_mandante valor_equipe_titular_visitante
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
## [6,] TRUE TRUE
## [7,] TRUE TRUE
## [8,] TRUE TRUE
## [9,] FALSE FALSE
## [10,] FALSE FALSE
## idade_media_titular_mandante idade_media_titular_visitante gols_mandante
## [1,] FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE
## [6,] TRUE TRUE FALSE
## [7,] TRUE TRUE FALSE
## [8,] TRUE TRUE FALSE
## [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
## gols_visitante gols_1_tempo_mandante gols_1_tempo_visitante
## [1,] FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
A função is.na transformou as informações ausentes em
valores logicos. FALSE representa um valor preenchido
enquanto TRUE seria um valor ausente (NA).
Para a remoção ou ocultação desses dados usaremos as funções
na.exclude e na.omit.
Excluindo os valores NA:
## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## 10 2018 2018-08-09 20 Estádio Presidente Vargas 18047
## 11 2018 2018-04-15 1 Estádio Manoel Barradas 13142
## 12 2018 2018-05-06 4 Estádio Manoel Barradas 7030
## 13 2018 2018-05-20 6 Estádio Manoel Barradas 8371
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## 10 Ceará SC Santos FC Lisca Cuca
## 11 EC Vitória Flamengo Vágner Mancini Maurício Barbieri
## 12 EC Vitória Fluminense Vágner Mancini Abel Braga
## 13 EC Vitória Ceará SC Vágner Mancini Marcelo Chamusca
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## 10 19 14 6430000
## 11 10 9 8080000
## 12 17 12 11680000
## 13 18 19 10580000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## 10 29600000 29.4
## 11 55000000 26.3
## 12 9350000 26.4
## 13 10180000 27.5
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## 10 26.2 1 1
## 11 28.4 2 2
## 12 25.0 1 2
## 13 29.8 2 1
## gols_1_tempo_mandante gols_1_tempo_visitante
## 1 0 1
## 2 0 1
## 3 1 1
## 4 1 0
## 5 0 2
## 9 0 0
## 10 0 0
## 11 1 1
## 12 1 0
## 13 1 0
É possível observar que algumas linhas do banco de dados foram
excluídas, isso fica mais evidente se utilizarmos a função
nrow() para verificar o tamanho do banco de dados.
## [1] 5498
## [1] 5226
Agora usando a função na.omit():
## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## 10 2018 2018-08-09 20 Estádio Presidente Vargas 18047
## 11 2018 2018-04-15 1 Estádio Manoel Barradas 13142
## 12 2018 2018-05-06 4 Estádio Manoel Barradas 7030
## 13 2018 2018-05-20 6 Estádio Manoel Barradas 8371
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## 10 Ceará SC Santos FC Lisca Cuca
## 11 EC Vitória Flamengo Vágner Mancini Maurício Barbieri
## 12 EC Vitória Fluminense Vágner Mancini Abel Braga
## 13 EC Vitória Ceará SC Vágner Mancini Marcelo Chamusca
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## 10 19 14 6430000
## 11 10 9 8080000
## 12 17 12 11680000
## 13 18 19 10580000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## 10 29600000 29.4
## 11 55000000 26.3
## 12 9350000 26.4
## 13 10180000 27.5
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## 10 26.2 1 1
## 11 28.4 2 2
## 12 25.0 1 2
## 13 29.8 2 1
## gols_1_tempo_mandante gols_1_tempo_visitante
## 1 0 1
## 2 0 1
## 3 1 1
## 4 1 0
## 5 0 2
## 9 0 0
## 10 0 0
## 11 1 1
## 12 1 0
## 13 1 0
O resultado vai ser o mesmo que da função na.exclude(),
o importante é utilizar uma das duas para limpar o banco de dados.
Para darmos continuidade a aula vamos limpar o nosso banco de dados e subscrevê-lo:
## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante
## 1 0 1
## 2 0 1
## 3 1 1
## 4 1 0
## 5 0 2
## 9 0 0
Podemos adicionar novas colunas ao nosso banco de dados e excluí-las.
$:Vamos adicionar uma coluna para ver o total de gols em cada partida:
dados_serie_a$gols_partida <- dados_serie_a$gols_mandante + dados_serie_a$gols_visitante
head(dados_serie_a)## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
É possível observar que uma nova coluna foi adicionada ao nosso banco de dados.
Para a remover colunas é possível usar vários métodos, mas vamos focar em dois nessa aula. Uma opção para remover apenas uma coluna e outra opção para remover várias.
Para remover uma coluna em específico, atribuiremos
NULL a variável de interesse, que nesse caso será a coluna
“rodada”:
# Primeiro vamos copiar a nossa base de dados em outro objeto
teste_colunas <- dados_serie_a
# Vamos remover a coluna "rodada"
teste_colunas$rodada <- NULL
head(teste_colunas)## ano_campeonato data estadio publico time_mandante
## 1 2018 2018-04-15 Estádio São Januário 7197 Vasco da Gama
## 2 2018 2018-05-06 Estádio São Januário 3311 Vasco da Gama
## 3 2018 2018-05-13 Estádio São Januário 3542 Vasco da Gama
## 4 2018 2018-05-31 Estádio São Januário 4584 Vasco da Gama
## 5 2018 2018-06-03 Estádio São Januário 9454 Vasco da Gama
## 9 2018 2018-07-19 Estádio Presidente Vargas 15197 Ceará SC
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Atlético-MG Zé Ricardo Thiago Larghi 6
## 2 América-MG Zé Ricardo Enderson Moreira 7
## 3 EC Vitória Zé Ricardo Vágner Mancini 2
## 4 Paraná Zé Ricardo Rogério Micale 12
## 5 Botafogo Zé Ricardo Alberto Valentim 10
## 9 Sport Recife Lisca Claudinei Oliveira 20
## colocacao_visitante valor_equipe_titular_mandante
## 1 13 12950000
## 2 3 11600000
## 3 19 10550000
## 4 20 9750000
## 5 14 13350000
## 9 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
A coluna “rodada” não existe mais no nosso banco de dados.
Vamos excluir todas as colunas que evolvem a quantidade de gols:
# Usaremos vetores e a posição das colunas para excluí-las
teste_colunas <- teste_colunas[,-c(15:19)]
head(teste_colunas)## ano_campeonato data estadio publico time_mandante
## 1 2018 2018-04-15 Estádio São Januário 7197 Vasco da Gama
## 2 2018 2018-05-06 Estádio São Januário 3311 Vasco da Gama
## 3 2018 2018-05-13 Estádio São Januário 3542 Vasco da Gama
## 4 2018 2018-05-31 Estádio São Januário 4584 Vasco da Gama
## 5 2018 2018-06-03 Estádio São Januário 9454 Vasco da Gama
## 9 2018 2018-07-19 Estádio Presidente Vargas 15197 Ceará SC
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Atlético-MG Zé Ricardo Thiago Larghi 6
## 2 América-MG Zé Ricardo Enderson Moreira 7
## 3 EC Vitória Zé Ricardo Vágner Mancini 2
## 4 Paraná Zé Ricardo Rogério Micale 12
## 5 Botafogo Zé Ricardo Alberto Valentim 10
## 9 Sport Recife Lisca Claudinei Oliveira 20
## colocacao_visitante valor_equipe_titular_mandante
## 1 13 12950000
## 2 3 11600000
## 3 19 10550000
## 4 20 9750000
## 5 14 13350000
## 9 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante
## 1 28.6
## 2 29.0
## 3 27.7
## 4 25.2
## 5 26.7
## 9 30.4
Agora reduzimos a nossa base de dados com 20 variáveis para apenas 14.
Para a parte de manipulação de datas iremos usar a coluna “data”. Ela
está no formato YMD (ano-mês-dia), vamos coverter para o formato DMY
(dia-mês-ano) que é o padrão brasileiro. A variável de interesse está
como caracter, primeiro iremos converter para o para data com a função
ymd() do pacote lubridate.
## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
Já é possível observar que mudamos o tipo da coluna. Agora para mudar
o formato da data usaremos a função format().
## ano_campeonato data rodada estadio publico
## 1 2018 15-04-2018 1 Estádio São Januário 7197
## 2 2018 06-05-2018 4 Estádio São Januário 3311
## 3 2018 13-05-2018 5 Estádio São Januário 3542
## 4 2018 31-05-2018 8 Estádio São Januário 4584
## 5 2018 03-06-2018 9 Estádio São Januário 9454
## 9 2018 19-07-2018 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
É possível observar que os dados foram alterados para o padrão DMY e
transformado novamente em caracter. Apesar da alteração ajudar na
visualização não é possível usar esse padrão no banco de dados, pois o
ao tentar usar funções para verificar o ano, mês e o dia, os resultados
vão vir invertidos. Por exemplo, ao usar afunção year() a
informação será do dia
## [1] 15 6 13 31 3 19
Para podermos utilizar essa função, iremos converter a data novamente para o formato YMD.
dados_serie_a$data <- dmy(dados_serie_a$data)
dados_serie_a$data <- format(dados_serie_a$data, "%Y-%m-%d")
head(dados_serie_a)## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 9 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 9 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 9 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
Agora vamos realizar o mesmo teste com a função year() e
comparar os resultados
## [1] 15 6 13 31 3 19
## [1] 2018 2018 2018 2018 2018 2018
Com isso, podemos realizar a exclusão da coluna “ano_campeonato”, visto que o dado virou reduntante já que podemos usar funções para conseguir esse dado.
## ano_campeonato data rodada estadio publico
## 1 2018 2018-04-15 1 Estádio São Januário 7197
## 2 2018 2018-05-06 4 Estádio São Januário 3311
## 3 2018 2018-05-13 5 Estádio São Januário 3542
## 4 2018 2018-05-31 8 Estádio São Januário 4584
## 5 2018 2018-06-03 9 Estádio São Januário 9454
## 6 2018 2018-07-19 13 Estádio Presidente Vargas 15197
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 Vasco da Gama Atlético-MG Zé Ricardo Thiago Larghi
## 2 Vasco da Gama América-MG Zé Ricardo Enderson Moreira
## 3 Vasco da Gama EC Vitória Zé Ricardo Vágner Mancini
## 4 Vasco da Gama Paraná Zé Ricardo Rogério Micale
## 5 Vasco da Gama Botafogo Zé Ricardo Alberto Valentim
## 6 Ceará SC Sport Recife Lisca Claudinei Oliveira
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 6 13 12950000
## 2 7 3 11600000
## 3 2 19 10550000
## 4 12 20 9750000
## 5 10 14 13350000
## 6 20 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 6 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 6 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 6 0 0 1
## [1] 370
## [1] 5226
Com isso foi possível observar que é possível deletar a coluna do “ano_campeonato”.
## data rodada estadio publico time_mandante
## 1 2018-04-15 1 Estádio São Januário 7197 Vasco da Gama
## 2 2018-05-06 4 Estádio São Januário 3311 Vasco da Gama
## 3 2018-05-13 5 Estádio São Januário 3542 Vasco da Gama
## 4 2018-05-31 8 Estádio São Januário 4584 Vasco da Gama
## 5 2018-06-03 9 Estádio São Januário 9454 Vasco da Gama
## 9 2018-07-19 13 Estádio Presidente Vargas 15197 Ceará SC
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Atlético-MG Zé Ricardo Thiago Larghi 6
## 2 América-MG Zé Ricardo Enderson Moreira 7
## 3 EC Vitória Zé Ricardo Vágner Mancini 2
## 4 Paraná Zé Ricardo Rogério Micale 12
## 5 Botafogo Zé Ricardo Alberto Valentim 10
## 9 Sport Recife Lisca Claudinei Oliveira 20
## colocacao_visitante valor_equipe_titular_mandante
## 1 13 12950000
## 2 3 11600000
## 3 19 10550000
## 4 20 9750000
## 5 14 13350000
## 9 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 21850000 28.5
## 2 9000000 28.0
## 3 11080000 28.3
## 4 7700000 25.7
## 5 14050000 27.8
## 9 12600000 30.1
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.6 2 1
## 2 29.0 4 1
## 3 27.7 2 3
## 4 25.2 1 0
## 5 26.7 1 2
## 9 30.4 1 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 1 3
## 2 0 1 5
## 3 1 1 5
## 4 1 0 1
## 5 0 2 3
## 9 0 0 1
E aqui finalizamos a manipulação de dados.
Primeiramente vamos importar a base dados para o R. Rodando somente o objeto que contém a base dados, podemos visualizar a mesma no Console
Console:
Porém a visualização pelo Console muitas vezes não é muito bem
organizada, para isso podemos utilizar a função View() e
termos uma visão melhor da base dados, o V de View tem que ser maiúsculo
para chamar a função corretamente.
Isso abrirá uma nova guia no Rstudio, na qual você pode visualizar melhor o seu banco de dados.
Usando o summarise, podemos resumir o data frame completo para apenas algumas colunas de interesse. No exemplo, vamos resumir o dataframe para somente os times e os gols marcados, para saber quais equipes se enfrentaram e qual foi o placar
summarise(dados_serie_a, .by = c('time_mandante', 'gols_mandante', 'time_visitante', 'gols_visitante'))## time_mandante gols_mandante time_visitante gols_visitante
## 1 Vasco da Gama 2 Atlético-MG 1
## 2 Vasco da Gama 4 América-MG 1
## 3 Vasco da Gama 2 EC Vitória 3
## 4 Vasco da Gama 1 Paraná 0
## 5 Vasco da Gama 1 Botafogo 2
## 6 Ceará SC 1 Sport Recife 0
Também é possível armazenar esse resultado em um novo objeto como um meio de fazer um novo data frame e preservar o trabalho feito.
dados_resumidos <- summarise(dados_serie_a, .by = c('time_mandante', 'gols_mandante', 'time_visitante', 'gols_visitante'))
head(dados_resumidos)## time_mandante gols_mandante time_visitante gols_visitante
## 1 Vasco da Gama 2 Atlético-MG 1
## 2 Vasco da Gama 4 América-MG 1
## 3 Vasco da Gama 2 EC Vitória 3
## 4 Vasco da Gama 1 Paraná 0
## 5 Vasco da Gama 1 Botafogo 2
## 6 Ceará SC 1 Sport Recife 0
Usando summarise():
Agrupe todas as colunas que envolvem o time mandante em um novo objeto.
Agrupe todas as colunas que envolvem o time visitante em um novo objeto.
Armazene a data, o estádio, o público e o número de gols da partida em um novo objeto.
O operador Pipe %>% facilita a leitura e o
encadeamento de funções permitindo que você passe o resultado de uma
operação como entrada para a próxima, sem precisar de variáveis
intermediárias. Vamos fazer alguns exemplos retirando a média do valor
das equipes jogando em casa.
valor_media_equipe_mandante <- mean(dados_serie_a$valor_equipe_titular_mandante)
valor_media_equipe_mandante## [1] 17402487
Exemplo sem o pipe:
media_gols_equipes_caras <- summarise(filter(dados_serie_a, valor_equipe_titular_mandante > valor_media_equipe_mandante), media = mean(gols_mandante))
media_gols_equipes_caras## media
## 1 1.622264
Exemplo com o pipe:
media_gols_equipes_caras_2 <- dados_serie_a %>%
filter(valor_equipe_titular_mandante > valor_media_equipe_mandante) %>%
summarise(media = mean(gols_mandante))
media_gols_equipes_caras_2## media
## 1 1.622264
Usando o operador pipe não preciso ficar passando esse primeiro
argumento toda vez, o %>% faz isso. Para não precisar
digitar o pipe toda vez é possível usar as teclas ctrl +
shift + m para criá-lo.
Usando o operador pipe %>%: Refaça
os exercícios do módulo anterior usando o %>%
Agrupe todas as colunas que envolvem o time mandante em um novo objeto.
Agrupe todas as colunas que envolvem o time visitante em um novo objeto.
Armazene a data, o estádio, o público e o número de gols da partida em um novo objeto.
Outra função bem útil é a select(), que é utilizada para
selecionar colunas específicas de um data frame. Ela permite que você
trabalhe apenas com as colunas que são relevantes para a sua análise,
tornando seu código mais limpo e eficiente. As principais
funcionalidades são a seleção, reordenação e exclusão de colunas. Há
diferentes formas de selecionar as colunas pelo select:
## time_mandante time_visitante publico
## 1 Vasco da Gama Atlético-MG 7197
## 2 Vasco da Gama América-MG 3311
## 3 Vasco da Gama EC Vitória 3542
## 4 Vasco da Gama Paraná 4584
## 5 Vasco da Gama Botafogo 9454
## 9 Ceará SC Sport Recife 15197
## time_visitante colocacao_visitante tecnico_mandante
## 1 Atlético-MG 13 Zé Ricardo
## 2 América-MG 3 Zé Ricardo
## 3 EC Vitória 19 Zé Ricardo
## 4 Paraná 20 Zé Ricardo
## 5 Botafogo 14 Zé Ricardo
## 9 Sport Recife 7 Lisca
## valor_equipe_titular_mandante time_mandante
## 1 12950000 Vasco da Gama
## 2 11600000 Vasco da Gama
## 3 10550000 Vasco da Gama
## 4 9750000 Vasco da Gama
## 5 13350000 Vasco da Gama
## 9 7800000 Ceará SC
## estadio publico time_mandante time_visitante
## 1 Estádio São Januário 7197 Vasco da Gama Atlético-MG
## 2 Estádio São Januário 3311 Vasco da Gama América-MG
## 3 Estádio São Januário 3542 Vasco da Gama EC Vitória
## 4 Estádio São Januário 4584 Vasco da Gama Paraná
## 5 Estádio São Januário 9454 Vasco da Gama Botafogo
## 9 Estádio Presidente Vargas 15197 Ceará SC Sport Recife
## tecnico_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 Zé Ricardo 13 12950000
## 2 Zé Ricardo 3 11600000
## 3 Zé Ricardo 19 10550000
## 4 Zé Ricardo 20 9750000
## 5 Zé Ricardo 14 13350000
## 9 Lisca 7 7800000
## gols_mandante gols_visitante
## 1 2 1
## 2 4 1
## 3 2 3
## 4 1 0
## 5 1 2
## 9 1 0
Outra maneira de selecionar seria escolhendo somente as colunas que
não quer buscar, utilizando um - na frente da coluna.
Observar que a exclusão também aceita todos os diferentes métodos, e
misturados, no caso do range é necessário um () para
indicar.
removendo_colunas <- dados_serie_a %>%
select(-gols_1_tempo_mandante, -gols_1_tempo_visitante, -14, -15, -(1:5))
head(removendo_colunas)## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Atlético-MG Zé Ricardo Thiago Larghi 6
## 2 América-MG Zé Ricardo Enderson Moreira 7
## 3 EC Vitória Zé Ricardo Vágner Mancini 2
## 4 Paraná Zé Ricardo Rogério Micale 12
## 5 Botafogo Zé Ricardo Alberto Valentim 10
## 9 Sport Recife Lisca Claudinei Oliveira 20
## colocacao_visitante valor_equipe_titular_mandante
## 1 13 12950000
## 2 3 11600000
## 3 19 10550000
## 4 20 9750000
## 5 14 13350000
## 9 7 7800000
## valor_equipe_titular_visitante idade_media_titular_mandante gols_visitante
## 1 21850000 28.5 1
## 2 9000000 28.0 1
## 3 11080000 28.3 3
## 4 7700000 25.7 0
## 5 14050000 27.8 2
## 9 12600000 30.1 0
## gols_partida
## 1 3
## 2 5
## 3 5
## 4 1
## 5 3
## 9 1
Também é possível usar outras funções aliadas ao
select() para selecionarmos diversas colunas de uma
vez.
contais(): Podemos utilizar a função para separar
colunas cujos nomes contenham um determinado padrão de caracteres.Vamos selecionar apenas as colunas com informações sobre o time mandante:
## time_mandante tecnico_mandante colocacao_mandante
## 1 Vasco da Gama Zé Ricardo 6
## 2 Vasco da Gama Zé Ricardo 7
## 3 Vasco da Gama Zé Ricardo 2
## 4 Vasco da Gama Zé Ricardo 12
## 5 Vasco da Gama Zé Ricardo 10
## 9 Ceará SC Lisca 20
## valor_equipe_titular_mandante idade_media_titular_mandante gols_mandante
## 1 12950000 28.5 2
## 2 11600000 28.0 4
## 3 10550000 28.3 2
## 4 9750000 25.7 1
## 5 13350000 27.8 1
## 9 7800000 30.1 1
## gols_1_tempo_mandante
## 1 0
## 2 0
## 3 1
## 4 1
## 5 0
## 9 0
starts_with(): Para selecionar colunas que começam com
um certo padrão de caracteres.Vamos selecionar apenas as colunas que começam com a palavra valor:
## valor_equipe_titular_mandante valor_equipe_titular_visitante
## 1 12950000 21850000
## 2 11600000 9000000
## 3 10550000 11080000
## 4 9750000 7700000
## 5 13350000 14050000
## 9 7800000 12600000
ends_with(): Podemos igualmente selecionar pelas
caracteres que formam o fim de uma determinada coluna.Vamos selecionar apenas as colunas que terminam com a palavra visitante:
## time_visitante tecnico_visitante colocacao_visitante
## 1 Atlético-MG Thiago Larghi 13
## 2 América-MG Enderson Moreira 3
## 3 EC Vitória Vágner Mancini 19
## 4 Paraná Rogério Micale 20
## 5 Botafogo Alberto Valentim 14
## 9 Sport Recife Claudinei Oliveira 7
## valor_equipe_titular_visitante idade_media_titular_visitante gols_visitante
## 1 21850000 28.6 1
## 2 9000000 29.0 1
## 3 11080000 27.7 3
## 4 7700000 25.2 0
## 5 14050000 26.7 2
## 9 12600000 30.4 0
## gols_1_tempo_visitante
## 1 1
## 2 1
## 3 1
## 4 0
## 5 2
## 9 0
where(): Podemos usar a função para selecionar as
colunas que sejam de um determinado tipo, por exemplo colunas numéricas
ou colunas de strings.Selecionaremos as colunas numéricas:
## rodada publico colocacao_mandante colocacao_visitante
## 1 1 7197 6 13
## 2 4 3311 7 3
## 3 5 3542 2 19
## 4 8 4584 12 20
## 5 9 9454 10 14
## 9 13 15197 20 7
## valor_equipe_titular_mandante valor_equipe_titular_visitante
## 1 12950000 21850000
## 2 11600000 9000000
## 3 10550000 11080000
## 4 9750000 7700000
## 5 13350000 14050000
## 9 7800000 12600000
## idade_media_titular_mandante idade_media_titular_visitante gols_mandante
## 1 28.5 28.6 2
## 2 28.0 29.0 4
## 3 28.3 27.7 2
## 4 25.7 25.2 1
## 5 27.8 26.7 1
## 9 30.1 30.4 1
## gols_visitante gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 1 0 1 3
## 2 1 0 1 5
## 3 3 1 1 5
## 4 0 1 0 1
## 5 2 0 2 3
## 9 0 0 0 1
E as colunas de strings:
## data estadio time_mandante time_visitante
## 1 2018-04-15 Estádio São Januário Vasco da Gama Atlético-MG
## 2 2018-05-06 Estádio São Januário Vasco da Gama América-MG
## 3 2018-05-13 Estádio São Januário Vasco da Gama EC Vitória
## 4 2018-05-31 Estádio São Januário Vasco da Gama Paraná
## 5 2018-06-03 Estádio São Januário Vasco da Gama Botafogo
## 9 2018-07-19 Estádio Presidente Vargas Ceará SC Sport Recife
## tecnico_mandante tecnico_visitante
## 1 Zé Ricardo Thiago Larghi
## 2 Zé Ricardo Enderson Moreira
## 3 Zé Ricardo Vágner Mancini
## 4 Zé Ricardo Rogério Micale
## 5 Zé Ricardo Alberto Valentim
## 9 Lisca Claudinei Oliveira
Usando select():
Selecione todas as colunas que envolvem o time mandante.
Selecione todas as colunas que envolvem o time visitante.
Selecione todas as colunas que envolvem gols.
Selecione todas as colunas que não são numéricas.
Selecione apenas o nome dos times e os seus técnicos.
No pacote dplyr do tidyverse temos a função filter(),
muito útil para filtrar linhas com especificações desejadas.Filtros
simples envolvem comparações entre valores de uma coluna e um valor
constante. Alguns deles são:
Vamos começar com alguns exercícios de aplicação. Vamos verificar quais jogos tiveram um público maior ou igual a 50 mil pessoas.
## data rodada estadio publico
## 1 2018-07-22 14 Estádio Cícero Pompeu de Toledo 58624
## 2 2018-05-12 5 Arena do Grêmio 51870
## 3 2018-04-29 3 Estádio Governador Plácido Castelo 52952
## 4 2018-06-08 10 Estádio Nacional de Brasília Mané Garrincha 60000
## 5 2018-04-22 2 Estádio Jornalista Mário Filho 52106
## 6 2018-05-06 4 Estádio Jornalista Mário Filho 60182
## time_mandante time_visitante tecnico_mandante tecnico_visitante
## 1 São Paulo Corinthians Diego Aguirre Osmar Loss
## 2 Grêmio Internacional Renato Gaúcho Odair Hellmann
## 3 Ceará SC Flamengo Marcelo Chamusca Maurício Barbieri
## 4 Fluminense Flamengo Abel Braga Maurício Barbieri
## 5 Flamengo América-MG Maurício Barbieri Enderson Moreira
## 6 Flamengo Internacional Maurício Barbieri Odair Hellmann
## colocacao_mandante colocacao_visitante valor_equipe_titular_mandante
## 1 2 8 25800000
## 2 5 13 58250000
## 3 16 3 7950000
## 4 9 1 13650000
## 5 9 2 45700000
## 6 1 11 51950000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 38000000 28.4
## 2 23750000 27.5
## 3 55000000 28.1
## 4 74500000 25.5
## 5 7300000 26.3
## 6 23750000 26.2
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 28.4 3 1
## 2 26.7 0 0
## 3 28.4 0 3
## 4 25.7 0 2
## 5 27.6 2 0
## 6 27.4 2 0
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 0 4
## 2 0 0 0
## 3 0 1 3
## 4 0 1 2
## 5 2 0 2
## 6 0 0 2
Outra maneira de acessar essa informação seria com o operador
$, vamos fazer para 60 mil pessoas.
## data rodada estadio publico time_mandante
## 162 2018-05-06 4 Estádio Jornalista Mário Filho 60182 Flamengo
## 235 2018-09-02 22 Estádio Jornalista Mário Filho 61277 Flamengo
## 240 2018-12-01 38 Estádio Jornalista Mário Filho 66046 Flamengo
## 353 2018-10-28 31 Estádio Jornalista Mário Filho 65102 Flamengo
## 1051 2017-09-24 25 Estádio Cícero Pompeu de Toledo 61142 São Paulo
## 1053 2017-12-03 38 Estádio Cícero Pompeu de Toledo 60485 São Paulo
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 162 Internacional Maurício Barbieri Odair Hellmann 1
## 235 Ceará SC Maurício Barbieri Lisca 3
## 240 Atlético-PR Dorival Júnior Tiago Nunes 2
## 353 Palmeiras Dorival Júnior Luiz Felipe Scolari 2
## 1051 Corinthians Dorival Júnior Fábio Carille 17
## 1053 EC Bahia Dorival Júnior Paulo César Carpegiani 12
## colocacao_visitante valor_equipe_titular_mandante
## 162 11 51950000
## 235 19 41750000
## 240 7 38300000
## 353 1 45550000
## 1051 1 31000000
## 1053 11 27800000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 162 23750000 26.2
## 235 6980000 28.8
## 240 11450000 27.9
## 353 26850000 27.3
## 1051 22500000 25.8
## 1053 12250000 26.6
## idade_media_titular_visitante gols_mandante gols_visitante
## 162 27.4 2 0
## 235 28.9 0 1
## 240 26.3 1 2
## 353 29.2 1 1
## 1051 26.9 1 1
## 1053 24.6 1 1
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 162 0 0 2
## 235 0 0 1
## 240 1 0 3
## 353 0 0 2
## 1051 1 0 2
## 1053 0 0 2
É possível utilizar a função count() para obter a
frequência que a variável aparece.
Vamos verificar quais anos ocorreram os jogos com público maior do que 60 mil espectadores:
## year(data) n
## 1 2010 1
## 2 2011 2
## 3 2012 1
## 4 2013 1
## 5 2015 2
## 6 2017 2
## 7 2018 4
## 8 2019 14
## 9 2021 3
## 10 2022 8
## 11 2023 13
## 12 2024 3
Também é possível fazer filtros combinados com o operador
& que funciona como o conectivo “e”.
Vamos verificar se ocorreu alguma partida entre o mandante em segundo lugar e o visitante em primeiro:
duelo_topo <- dados_serie_a %>%
filter(colocacao_mandante == 2 & colocacao_visitante == 1)
duelo_topo## data rodada estadio publico time_mandante
## 1 2018-10-28 31 Estádio Jornalista Mário Filho 65102 Flamengo
## 2 2017-06-25 10 Arena do Grêmio 54022 Grêmio
## 3 2015-11-01 33 Estádio Raimundo Sampaio 21798 Atlético-MG
## 4 2014-09-14 21 Estádio Cícero Pompeu de Toledo 58627 São Paulo
## 5 2012-10-21 32 Estádio Governador Magalhães Pinto 20096 Atlético-MG
## 6 2021-10-31 29 Estádio Jornalista Mário Filho 24696 Flamengo
## 7 2021-06-06 2 Estádio Nabi Abi Chedid 0 RB Bragantino
## 8 2019-12-08 38 Estádio Urbano Caldeira 13310 Santos FC
## 9 2022-08-14 22 Neo Química Arena 44966 Corinthians
## 10 2022-11-13 38 Estádio Beira-Rio 31632 Internacional
## 11 2022-05-08 5 Estádio Nabi Abi Chedid 9993 RB Bragantino
## 12 2022-08-28 24 Estádio Jornalista Mário Filho 45084 Fluminense
## 13 2010-07-14 8 Estádio Governador Plácido Castelo 44500 Ceará SC
## 14 2010-10-10 29 Estádio Governador Magalhães Pinto 22812 Cruzeiro
## 15 2021-02-21 37 Estádio Jornalista Mário Filho 0 Flamengo
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Palmeiras Dorival Júnior Luiz Felipe Scolari 2
## 2 Corinthians Renato Gaúcho Fábio Carille 2
## 3 Corinthians Levir Culpi Tite 2
## 4 Cruzeiro Muricy Ramalho Marcelo Oliveira 2
## 5 Fluminense Cuca Abel Braga 2
## 6 Atlético-MG Renato Portaluppi Cuca 2
## 7 EC Bahia Maurício Barbieri Dado Cavalcanti 2
## 8 Flamengo Jorge Sampaoli Jorge Jesus 2
## 9 Palmeiras Vítor Pereira Abel Ferreira 2
## 10 Palmeiras Mano Menezes Abel Ferreira 2
## 11 Corinthians Maurício Barbieri Vítor Pereira 2
## 12 Palmeiras Fernando Diniz Abel Ferreira 2
## 13 Corinthians Estevam Soares Mano Menezes 2
## 14 Fluminense Cuca Muricy Ramalho 2
## 15 Internacional Rogério Ceni Abel Braga 2
## colocacao_visitante valor_equipe_titular_mandante
## 1 1 45550000
## 2 1 29300000
## 3 1 36250000
## 4 1 44950000
## 5 1 22600000
## 6 1 63350000
## 7 1 18650000
## 8 1 38300000
## 9 1 57100000
## 10 1 28550000
## 11 1 33850000
## 12 1 31600000
## 13 1 6100000
## 14 1 24900000
## 15 1 79050000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 26850000 27.3
## 2 20250000 27.4
## 3 47500000 28.9
## 4 30200000 27.4
## 5 28600000 28.1
## 6 54500000 28.6
## 7 10450000 25.4
## 8 90900000 27.7
## 9 86500000 26.4
## 10 85200000 27.4
## 11 32300000 22.6
## 12 95500000 28.9
## 13 17600000 28.6
## 14 20150000 27.4
## 15 29500000 29.0
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 29.2 1 1
## 2 27.2 0 1
## 3 27.3 0 3
## 4 26.3 2 0
## 5 27.8 3 2
## 6 27.9 1 0
## 7 27.1 3 3
## 8 27.9 4 0
## 9 27.3 0 1
## 10 25.9 3 0
## 11 28.7 0 1
## 12 28.3 1 1
## 13 29.0 0 0
## 14 27.3 1 0
## 15 25.4 2 1
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 0 0 2
## 2 0 0 1
## 3 0 0 3
## 4 1 0 2
## 5 0 0 5
## 6 1 0 1
## 7 1 2 6
## 8 2 0 4
## 9 0 0 1
## 10 2 0 3
## 11 0 0 1
## 12 1 1 2
## 13 0 0 0
## 14 1 0 1
## 15 1 1 3
E em quais desses jogos o segundo lugar superou o primeiro:
## data rodada estadio publico time_mandante
## 1 2014-09-14 21 Estádio Cícero Pompeu de Toledo 58627 São Paulo
## 2 2012-10-21 32 Estádio Governador Magalhães Pinto 20096 Atlético-MG
## 3 2021-10-31 29 Estádio Jornalista Mário Filho 24696 Flamengo
## 4 2019-12-08 38 Estádio Urbano Caldeira 13310 Santos FC
## 5 2022-11-13 38 Estádio Beira-Rio 31632 Internacional
## 6 2010-10-10 29 Estádio Governador Magalhães Pinto 22812 Cruzeiro
## 7 2021-02-21 37 Estádio Jornalista Mário Filho 0 Flamengo
## time_visitante tecnico_mandante tecnico_visitante colocacao_mandante
## 1 Cruzeiro Muricy Ramalho Marcelo Oliveira 2
## 2 Fluminense Cuca Abel Braga 2
## 3 Atlético-MG Renato Portaluppi Cuca 2
## 4 Flamengo Jorge Sampaoli Jorge Jesus 2
## 5 Palmeiras Mano Menezes Abel Ferreira 2
## 6 Fluminense Cuca Muricy Ramalho 2
## 7 Internacional Rogério Ceni Abel Braga 2
## colocacao_visitante valor_equipe_titular_mandante
## 1 1 44950000
## 2 1 22600000
## 3 1 63350000
## 4 1 38300000
## 5 1 28550000
## 6 1 24900000
## 7 1 79050000
## valor_equipe_titular_visitante idade_media_titular_mandante
## 1 30200000 27.4
## 2 28600000 28.1
## 3 54500000 28.6
## 4 90900000 27.7
## 5 85200000 27.4
## 6 20150000 27.4
## 7 29500000 29.0
## idade_media_titular_visitante gols_mandante gols_visitante
## 1 26.3 2 0
## 2 27.8 3 2
## 3 27.9 1 0
## 4 27.9 4 0
## 5 25.9 3 0
## 6 27.3 1 0
## 7 25.4 2 1
## gols_1_tempo_mandante gols_1_tempo_visitante gols_partida
## 1 1 0 2
## 2 0 0 5
## 3 1 0 1
## 4 2 0 4
## 5 2 0 3
## 6 1 0 1
## 7 1 1 3
A função group_by() agrupa as linhas de uma tabela de
acordo com os valores das colunas especificadas. Isso muda a forma como
operações subsequentes são aplicadas, pois elas serão executadas em cada
grupo, ao invés de no conjunto de dados inteiro. Vamos analisar em um
exemplo como tirar a média de gols do mandante e visitante por ano, no
caso o agrupamento será feito por ano.
gols_anuais <- dados_serie_a %>%
group_by(year(data)) %>%
summarize(media_gols_mandantes = mean(gols_mandante))
gols_anuais## # A tibble: 15 × 2
## `year(data)` media_gols_mandantes
## <dbl> <dbl>
## 1 2010 1.52
## 2 2011 1.66
## 3 2012 1.47
## 4 2013 1.50
## 5 2014 1.42
## 6 2015 1.47
## 7 2016 1.48
## 8 2017 1.39
## 9 2018 1.38
## 10 2019 1.38
## 11 2020 1.39
## 12 2021 1.32
## 13 2022 1.41
## 14 2023 1.42
## 15 2024 1.38
Podemos também tirar uma média de gols por rodada, para verificar se na rodadas finais as medias de gols são maiores.
gols_rodadas <- dados_serie_a %>%
group_by(rodada) %>%
summarize(media_gols_mandantes = mean(gols_mandante))
gols_rodadas## # A tibble: 38 × 2
## rodada media_gols_mandantes
## <int> <dbl>
## 1 1 1.64
## 2 2 1.44
## 3 3 1.38
## 4 4 1.42
## 5 5 1.35
## 6 6 1.53
## 7 7 1.28
## 8 8 1.34
## 9 9 1.47
## 10 10 1.41
## # ℹ 28 more rows
Usando group_by():
Agrupe pelo time mandante e faça a média de gols do time por partida.
Agrupe pelo time visitante e faça a soma dos gols do time.
Agrupe pelo dia e faça a média do valor do time mandante e do visitante.
Agrupe pelo estádio e faça a média do público.
Para o exercício final iremos misturar todo o conteúdo das funções para banco de dados.
Filtre o ano de 2015, agrupe pelo estádio e faça a média de gols por partida.
Filtre o time mandante do “Athletico-PR” e mostre os jogos nos quais a idade média foi maior ou igual a 26.2 anos.
Filtre o time visitante do “Atlético-PR”, agrupe por ano e mostre a média de público dos jogos.
Filtre o time do “Paraná”, tanto quanto mandante e visitante, e calcule o número de vitórias, empates e vitórias.
Filtre o time do “Coritiba FC” e calcule o número total de gols que fez como visitante em cada ano.
Para finalizar vamos fazer um quizz para verificar se foi possível realizar a fixação do conteúdo, o Quizz foi feito com base no conteúdo da aula.
Você pode verificar a respostas dos exercícios da aula no seguinte Link.