1 Introdução

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.

1.1 Variáveis Qualitativas e Quantitativas

Para entender melhor o tipo de dados que podemos trabalhar em um DataFrame, precisamos conhecer dois tipos principais de variáveis:

  1. Variáveis Qualitativas

As variáveis qualitativas são aquelas que representam categorias ou qualidades. Elas podem ser:

  • Nominais: não têm uma ordem definida (exemplo: cores, nomes de cidades).
  • Ordinais: que seguem uma ordem ou classificação (exemplo: avaliações de “ruim”, “bom”, “excelente”).
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.

  1. Variáveis Quantitativas

As variáveis quantitativas são aquelas que podem ser medidas numericamente. Elas podem ser:

  • Discretas: Números inteiros, como a quantidade de irmãos que uma pessoa tem (1, 2, 3…).
  • Contínuas: Podem assumir qualquer valor dentro de um intervalo contínuo, como altura (1.65 metros, 1.72 metros) ou peso (68.5 kg, 70.2 kg).
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

2 Pacotes

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.

2.1 Instalando 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.

# Instalando pacote
install.packages()

# Chamando pacote
library()
require()

2.2 Dplyr, Readr e Lubridate.

Para essa aula usaremos os seguintes pacotes:

  1. Dplyr: Manipulação de dados

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.
  1. 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.

  2. 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:

3 Data Frames

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.

3.1 Criando um Data Frame:

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:

  • Criando um Data Frame com uma única coluna contendo números de 1 a 20:
df1 <- data.frame(1:20)
df1 
##    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
  • Criando um Data Frame com três colunas(x, y, z):
df1 <- data.frame(x=(1:5), y=6:10, z=11:15)
df1 
##   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().

# Verificando a classe
class(df1)
## [1] "data.frame"
# Tipo e tamanho de cada coluna
str(df1)
## '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.

  • Vamos começar criando uma matriz, através de vetores nomeados:
# 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
  • Agora vamos compara a estrutura da matriz e do Dataframe:
# Estrutura da matriz (incluindo o número de linhas, colunas e o tipo dos dados)
str(matriz)
##  int [1:5, 1:3] 1 2 3 4 5 6 7 8 9 10 ...
# Estrutura do DataFrame df1
str(df1)
## '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
  • Para explorarmos mais algumas diferenças, vamos trabalhar com um vetor caracteres (strings) e vetores numéricos:
# 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
# Gerando o df2 com as colunas x, y e z
df2 <- data.frame(x=x, y=y, z=z)
df2 
##   x y  z
## 1 a 1  6
## 2 b 2  7
## 3 c 3  8
## 4 d 4  9
## 5 e 5 10
  • Agora vamos verificar a estrutura da matriz e do dataframe:
# Estrutura da matriz
str(matriz2)
##  chr [1:5, 1:3] "a" "b" "c" "d" "e" "1" "2" "3" "4" "5" "6" "7" "8" "9" ...
# Estrutura do DataFrame
str(df2)
## '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.

3.2 Acessos de dados e Funções para Dataframes

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:

# Acessando a primeira linha inteira do DataFrame df2
df2[1,]
##   x y z
## 1 a 1 6
# Acessando a primeira coluna inteira do DataFrame df2
df2[,1]
## [1] "a" "b" "c" "d" "e"
# Acessando as linhas de 1 a 3 da terceira coluna do DataFrame df2
df2[1:3,3]
## [1] 6 7 8
# Acessando o dado na linha 1 e coluna 3 do Dataframe df2
df2[1,3]
## [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:

# Acessa a coluna 'x' do DataFrame df2
df2$x
## [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"
# Acessa a coluna 'y' do DataFrame df2
df2$y
## [1] 1 2 3 4 5
# Verifica a classe da coluna 'y' (deve ser "integer" ou "numeric")
class(df2$y)
## [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.
# Converte a coluna 'y' para o tipo 'character' (texto)
as.character(df2$y)
## [1] "1" "2" "3" "4" "5"
# Converte a coluna 'y' para o tipo 'integer' (numérico)
as.integer(df2$y)
## [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.
# Carrega e exibe as primeiras 3 linhas do conjunto de dados 'df2'
head(df2, 3)
##   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.
# Carrega e exibe as últimas 3 linhas do conjunto de dados 'df2'
tail(df2, 3)
##   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.
# Calcula a média e mediana de uma coluna do DataFrame df2
mean(df2$y)   # Média da coluna 'y'
## [1] 3
median(df2$y) # Mediana da coluna 'y'
## [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.
summary(df2)
##       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.
# Ordena a coluna 'z' do df2 em ordem decrescente
sort(df2$z, decreasing = TRUE)
## [1] 10  9  8  7  6
# Ordena a coluna 'z' do df2 em ordem crescente
sort(df2$z)
## [1]  6  7  8  9 10

3.3 Exercícios

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:

  1. Crie um DataFrame com as seguintes colunas:Nome (nomes das pessoas);Idade (idade em anos); Altura (altura em centímetros); Peso (peso em quilogramas).

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:

  1. Use a função str() para verificar a estrutura do DataFrame (tipos de dados, número de colunas e linhas).

  2. Use summary() para obter um resumo estatístico das colunas numéricas do DataFrame.

Manipulação de dados:

  1. Acesse os dados da terceira pessoa (Carla).

  2. Acesse toda a coluna Altura_cm

  3. Acesse os valores de Peso das duas primeiras pessoas.

Cálculos estatísticos:

  1. Calcule a média e a mediana da coluna Idade.

  2. Calcule a média e a mediana da coluna Peso.

Ordenação:

  1. Ordene a coluna Altura_cm em ordem crescente.

  2. Ordene a coluna Idade em ordem decrescente.

Visualização:

  1. Mostre as primeiras 3 linhas do DataFrame.

  2. Mostre as últimas 2 linhas do DataFrame.

4 Importação de Dados

4.1 Bancos de dados nativos

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.

EUA_prisoes <- USArrests
head(EUA_prisoes)
##            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

4.2 Bancos de Dados Externos

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:

library(readr)
vgsales <- read_csv("C:/Users/Mariana Lick/Projeto/vgsales.csv")
## 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:

url <- "https://raw.githubusercontent.com/raymz1990/CE307-Projeto-Extensao/refs/heads/main/data/serie_a_2010_2024.csv"
dados <- read.csv(file = url,
                  header = TRUE,     
                  sep = ",",          
                  # quote = "",      
                  stringsAsFactors = FALSE)

5 Manipulação de Dados

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.

dados_serie_a <- dados

5.1 Valores Nulos

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.

valores_faltantes <- is.na(dados_serie_a)
head(valores_faltantes, 10)
##       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:

dados_excl_na <- na.exclude(dados_serie_a)
head(dados_excl_na, 10)
##    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.

nrow(dados_serie_a)
## [1] 5498
nrow(dados_excl_na)
## [1] 5226

Agora usando a função na.omit():

dados_omit_na <- na.omit(dados_serie_a)
head(dados_omit_na, 10)
##    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:

dados_serie_a <- na.omit(dados_serie_a)
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
## 1                     0                      1
## 2                     0                      1
## 3                     1                      1
## 4                     1                      0
## 5                     0                      2
## 9                     0                      0

5.2 Alteração de Colunas

Podemos adicionar novas colunas ao nosso banco de dados e excluí-las.

  • Para adicionar colunas usaremos a o nome do banco de dados e da coluna nova aliado ao $:

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.

  • Agora vamos excluir múltiplas colunas, será necessário usar vetores e a posição relativa de cada coluna que você quer excluir.

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.

5.3 Manipulação de Datas

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.

dados_serie_a$data <- ymd(dados_serie_a$data)
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

Já é possível observar que mudamos o tipo da coluna. Agora para mudar o formato da data usaremos a função format().

dados_serie_a$data <- format(dados_serie_a$data, "%d-%m-%Y")
head(dados_serie_a)
##   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

anos <- year(dados_serie_a$data)
head(anos)
## [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

anos2 <- year(dados_serie_a$data)
head(anos)
## [1] 15  6 13 31  3 19
head(anos2)
## [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_filtrado <- dados_serie_a %>% 
  filter(year(data) == 2018)
head(ano_filtrado)
##   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
nrow(ano_filtrado)
## [1] 370
nrow(dados_serie_a)
## [1] 5226

Com isso foi possível observar que é possível deletar a coluna do “ano_campeonato”.

dados_serie_a$ano_campeonato <- NULL
head(dados_serie_a)
##         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.

6 Funções para Banco de Dados

6.1 Função View

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

dados <- read.csv('C:/Users/Mariana Lick/Projeto/serie_a_2010_2024.csv')

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.

View(dados)

Isso abrirá uma nova guia no Rstudio, na qual você pode visualizar melhor o seu banco de dados.

6.2 Função Summarise

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

6.2.1 Exercícios

Usando summarise():

  1. Agrupe todas as colunas que envolvem o time mandante em um novo objeto.

  2. Agrupe todas as colunas que envolvem o time visitante em um novo objeto.

  3. Armazene a data, o estádio, o público e o número de gols da partida em um novo objeto.

6.3 Operador Pipe %>%

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.

6.3.1 Exercícios

Usando o operador pipe %>%: Refaça os exercícios do módulo anterior usando o %>%

  1. Agrupe todas as colunas que envolvem o time mandante em um novo objeto.

  2. Agrupe todas as colunas que envolvem o time visitante em um novo objeto.

  3. Armazene a data, o estádio, o público e o número de gols da partida em um novo objeto.

6.4 Função Select

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:

  • Seleção por nome:
publicos <- dados_serie_a %>%
            select('time_mandante', 'time_visitante', 'publico')

head(publicos)
##   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
  • Seleção por ID: E você pode ir ordenando como quiser as colunas, usando qualquer um dos diferentes métodos de seleção.
publicos <- dados_serie_a %>%
  select(6, 10, 7, 11, 5)

head(publicos)
##   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
  • Seleção por range/intervalo: Além disso você pode misturar os tipos de seleção que quiser entre ID, nome, range.
publicos <- dados_serie_a %>%
  select(3:7, 10, 11, gols_mandante, gols_visitante)

head(publicos)
##                     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:

dados_serie_a %>%
  select(contains("mandante")) %>% 
  head()
##   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:

dados_serie_a %>%
  select(starts_with("valor")) %>% 
  head()
##   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:

dados_serie_a %>%
  select(ends_with("visitante")) %>% 
  head()
##   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:

dados_serie_a %>%
  select(where(is.numeric)) %>% 
  head()
##   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:

dados_serie_a %>%
  select(where(is.character)) %>% 
  head()
##         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

6.4.1 Exercícios

Usando select():

  1. Selecione todas as colunas que envolvem o time mandante.

  2. Selecione todas as colunas que envolvem o time visitante.

  3. Selecione todas as colunas que envolvem gols.

  4. Selecione todas as colunas que não são numéricas.

  5. Selecione apenas o nome dos times e os seus técnicos.

6.5 Função Filter

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:

  • ==: Igual a
  • != : Diferente de
  • < : Menor que
  • > : Maior que
  • <= : Menor ou igual a
  • >= : Maior ou igual a

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.

publico_50mil <- dados_serie_a %>%
  filter(publico >= 50000)
head(publico_50mil)
##         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.

publico_60mil <- dados_serie_a[dados_serie_a$publico > 60000, ]
head(publico_60mil)
##            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:

publico_60mil %>%
  count(year(data))
##    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:

duelo_topo <- duelo_topo %>%
  filter(gols_mandante > gols_visitante)
  
duelo_topo
##         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

6.6 Função Group_by

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

6.6.1 Exercícios

Usando group_by():

  1. Agrupe pelo time mandante e faça a média de gols do time por partida.

  2. Agrupe pelo time visitante e faça a soma dos gols do time.

  3. Agrupe pelo dia e faça a média do valor do time mandante e do visitante.

  4. Agrupe pelo estádio e faça a média do público.

7 Exercício Final

Para o exercício final iremos misturar todo o conteúdo das funções para banco de dados.

  1. Filtre o ano de 2015, agrupe pelo estádio e faça a média de gols por partida.

  2. 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.

  3. Filtre o time visitante do “Atlético-PR”, agrupe por ano e mostre a média de público dos jogos.

  4. Filtre o time do “Paraná”, tanto quanto mandante e visitante, e calcule o número de vitórias, empates e vitórias.

  5. 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.