Tópicos Especiais em Estatística Comp.

Introdução ao R

Prof. Jodavid Ferreira

UFPE

R


O R é uma linguagem de programação inicialmente desenvolvida para computação estatística. E licenciada como Software Livre.


  • Atualmente, é uma linguagem de programação muito utilizada em estatística e ciência de dados, e é uma das linguagens mais populares para análise de dados.
  • É uma implementação de código aberto do S, que é uma linguagem de programação estatística desenvolvida pela AT&T Bell Laboratories.
  • As vantagens do R para programação estatística são a facilidade de uso, a capacidade de criar gráficos de alta qualidade e a comunidade de usuários ativos.

Linguagem R



O que é um Software Livre?

Resposta:

Quem são esses caras?

Linguagem R



O que é um Software Livre?

Resposta:

Quem são esses caras?

  • Richard Stallman e Linus Torvalds:
    • criadores do GNU e do Linux, respectivamente, e que são grandes defensores do software livre.
    • GNU é um sistema operacional livre, que é compatível com o Unix.
    • Linux é um kernel, que é o núcleo do sistema operacional, e é utilizado em conjunto com o GNU para formar o sistema operacional GNU/Linux.

Linguagem R


…voltando ao Software Livre…

  • Richard Stallman, também foi o fundador da Free Software Foundation, define um software livre como aquele que respeita a liberdade dos usuários.

  • Para que um software seja considerado livre, os usuários possuir as seguintes liberdades sobre o software:
  • A liberdade de executar o programa como desejar, para qualquer propósito.
  • A liberdade de estudar como o programa funciona e adaptá-lo para suas necessidades.
  • A liberdade de redistribuir cópias do programa.
  • A liberdade de melhorar o programa e distribuir suas melhorias para o público, para que toda a comunidade se beneficie.

Linguagem R



Mas o que tem de interessante nisso?


  • Um software livre, significa que você pode utilizá-lo para qualquer propósito, estudar seu código fonte, adaptá-lo para suas necessidades, redistribuir cópias do programa, melhorar o programa e distribuir suas melhorias para a comunidade.


Isso não é no nível de utilizar o R para fazer scripts, mas sim, que você pode pegar o R, fazer uma nova linguagem de programação baseada nele e distribuir para a comunidade, sem ter que pagar nada por isso, mas claro, respeitando a licença do R, esta deve ser a mesma na sua modificação.

Linguagem R



  • Para obter o R, acesse o link: https://cloud.r-project.org/

  • O CRAN (Comprehensive R Archive Network) é um conjunto de servidores-espelho distribuídos pelo mundo e é utilizado para distribuir o R e os pacotes do R.

  • Uma nova grande versão do R é lançada uma vez por ano, e há dois ou três pequenos lançamentos por ano.

  • É interessante manter o R sempre atualizado, pois as novas versões do R trazem melhorias de desempenho em relação aos hardware mais recentes, novas funcionalidades e correções de bugs. tware para o R.

No momento que essa aula foi criada, o R encontrava-se na versão 4.5.1.

Primeiros Passos em R



  • A partir de agora serão apresentados conceitos com exemplos para um início de jornada em R, com o intuito de oferecer uma compreensão sólida dos elementos essenciais para iniciar nessa linguagem.

Tipos de Variáveis

Os tipos de variáveis determinam a natureza das informações armazenadas e influenciam diretamente as operações que podem ser realizadas sobre elas, bem como as visualizações apropriadas para cada situação. De maneira geral, os dados podem ser classificados em diversas categorias, tais como: numéricos, categóricos, ordinais, binários, entre outros. Cada categoria apresenta características específicas que devem ser consideradas na condução das análises.

Tipos de Variáveis



Os dados podem ser rotulados em diversos tipos, entretanto, precisam refletir a natureza da informação que representam. Os principais tipos de dados incluem:

  1. Dados Numéricos: Representam quantidades mensuráveis, como idade, peso, altura, temperatura. Podem ser contínuos, assumindo qualquer valor contínuo (ex: altura), ou discretos, assumindo valores específicos, geralmente inteiros (ex: número de filhos).

  1. Dados Categóricos: Representam categorias ou grupos, como sexo, cor dos olhos, estado civil. Podem ser nominais, sem ordem natural (ex: cores), ou ordinais, com uma ordem natural (ex: níveis de escolaridade: fundamental, médio, superior).

Tipos de Variáveis



Fonte: https://study.com/academy/lesson/types-of-data-text-numbers-multimedia.html

Tipos de Variáveis



Fonte: https://www.projectpro.io/recipes/convert-categorical-features-numerical-features-in-python

Tipos de Variáveis



  1. Dados Binários: Representam duas categorias exclusivas, como sim/não, verdadeiro/falso, aprovado/reprovado.

Tipos de Variáveis



  1. Dados Textuais: Representam texto, como comentários de clientes, artigos de notícias, transcrições de entrevistas.

https://medium.com/@datanizing/modern-text-mining-with-python-part-2-of-5-data-exploration-with-pandas-ee3456cf6a4

Tipos de Variáveis



  1. Dados Temporais: Representam informações que levam em consideração o tempo, como vendas diárias, temperatura por hora, eventos históricos.

Tipos de Variáveis



  1. Dados Geoespaciais: Representam informações geográficas, como coordenadas de GPS, limites de países, localizações de pontos de interesse.

Fonte: https://www.researchgate.net/publication/235436779_Analises_espaciais_em_planejamento_urbano_novas_tendencias/figures?lo=1

Tipos de Variáveis



  1. Dados Multimídia: São dados associados a imagens, áudio e vídeo, como fotos de produtos, gravações de entrevistas, vídeos promocionais.

Tipos de Variáveis



  1. Dados de Rede: Descrevem conexões e relações, como redes sociais, redes de transporte, redes de citações acadêmicas.

Tipos de dados no R



No R, cada tipo de dado é manipulado utilizando tipos de variáveis específicas.

  • A seguir, é listado os tipos mais comuns no R e seus nomes correspondentes entre parênteses.

  • Adicionalmente, nos exemplos subsequentes, observa-se o emprego da função class(). Esta função é utilizada para identificar o tipo de dado, também conhecida como classe, de um objeto. Em essência, class() retorna o tipo do objeto em questão dentro do sistema de tipos do R. A relevância desta função reside no fato de que o tipo de variável define as operações e manipulações que podem ser aplicadas aos dados.

Tipos de dados no R



  1. Numéricas (numeric): Para números inteiros ou reais. Exemplos incluem idade, renda, temperatura.

    # Exemplos de variáveis numéricas
    idade <- 30
    preco_produto <- 99.90
    numero_de_filhos <- 2
    
    idade  # Exibe o valor da variável idade
    preco_produto # Exibe o valor da variável preco_produto
    numero_de_filhos # Exibe o valor da variável numero_de_filhos
    
    class(idade) # Verifica o tipo da variável idade (numeric)
    class(preco_produto) # Verifica o tipo da variável preco_produto (numeric)
    class(numero_de_filhos) # Verifica o tipo da variável numero_de_filhos (numeric)
    [1] 30
    [1] 99.9
    [1] 2
    [1] "numeric"
    [1] "numeric"
    [1] "numeric"

Tipos de dados no R



  1. Datas (Date): Um tipo especial para representar datas.

    # Exemplo de variável de data
    data_nascimento <- as.Date("1993-08-15") # Converte texto para o tipo Date
    
    data_nascimento # Exibe a data
    class(data_nascimento) # Verifica o tipo da variável (Date)
    [1] "1993-08-15"
    [1] "Date"

Tipos de dados no R



  1. Categóricas (Fatores) (factor): Para variáveis qualitativas nominais ou ordinais. Útil para categorias como sexo, nível de escolaridade, cores.

    # Exemplo de variável categórica (fator)
    nivel_escolaridade <- factor(c("Fundamental", "Médio", "Superior", "Médio", "Fundamental"),
                                 levels = c("Fundamental", "Médio", "Superior"), # Define a ordem dos níveis
                                 ordered = TRUE) # Indica que é um fator ordinal
    
    nivel_escolaridade # Exibe os níveis e os dados
    class(nivel_escolaridade) # Verifica o tipo da variável (factor)
    [1] Fundamental Médio       Superior    Médio       Fundamental
    Levels: Fundamental < Médio < Superior
    [1] "ordered" "factor" 

Tipos de dados no R



  1. Texto (character): Para variáveis qualitativas textuais, como nomes de cidades, descrições de produtos.

    # Exemplo de variável de texto
    nome_cidade <- "São Paulo"
    descricao_produto <- "Smartphone de última geração com câmera de alta resolução."
    
    nome_cidade # Exibe o nome da cidade
    descricao_produto # Exibe a descrição do produto
    class(nome_cidade) # Verifica o tipo da variável (character)
    class(descricao_produto) # Verifica o tipo da variável (character)
    [1] "São Paulo"
    [1] "Smartphone de última geração com câmera de alta resolução."
    [1] "character"
    [1] "character"

Tipos de dados no R



  1. Booleanas (Lógicas) (logical): Para variáveis que podem ser VERDADEIRO ou FALSO (TRUE ou FALSE no R).

    # Exemplo de variável booleana (lógica)
    aprovado <- TRUE
    possui_carteira_motorista <- FALSE
    
    aprovado # Exibe o valor de aprovado
    possui_carteira_motorista # Exibe o valor de possui_carteira_motorista
    class(aprovado) # Verifica o tipo da variável (logical)
    class(possui_carteira_motorista) # Verifica o tipo da variável (logical)
    [1] TRUE
    [1] FALSE
    [1] "logical"
    [1] "logical"

Pacotes

Expandindo as capacidades do R



  • Um pacote no R é uma colação de funções, dados e documentação que estende as capacidades do R base.

    • O R base é o conjunto de funções que estão disponíveis quando você instala o R.
  • Existem milhares de pacotes disponíveis no CRAN, que foram disponibilizados por desenvolvedores de todo o mundo.

  • Para instalar um pacote no R, é da seguinte forma:

install.packages("nome_do_pacote")
  • Se não aparecer nenhum erro no console, tudo indica que o pacote foi instalado corretamente.

Pacotes



  • Para carregar um pacote no R, utilizamos uma das seguintes funções:
# Exemplo de importação de pacotes
library(tidyverse)

ou

# Exemplo de importação de pacotes
require(tidyverse)

e as funções do pacote podem ser usadas de duas formas:

# Exemplo de utilização de função de pacote
iris |>
  filter(Species == "setosa") |>
  head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Pacotes


ou

# Exemplo de utilização de função de pacote
datasets::iris |>
  dplyr::filter(Species == "setosa") |>
  utils::head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

vou colocar aqui abaixo novamente…

# Exemplo de utilização de função de pacote
iris |>
  filter(Species == "setosa") |>
  head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Operações Básicas



  • O R é uma linguagem de programação que suporta operações aritméticas básicas, como adição, subtração, multiplicação e divisão.
# Exemplo de operações aritméticas
1 + 1
[1] 2
8 - 1
[1] 7
10 * 2
[1] 20
35 / 5
[1] 7

Criação de Objetos



  • No R, é possível criar objetos para armazenar valores, e esses objetos podem ser de diferentes tipos, como números, strings, vetores, matrizes, data frames, entre outros.
  • Criamos novos objetos utilizando o oprador de atribuição <- ou =, estes podem ser utilizados da seguinte forma:
# Exemplo de criação de objetos
x <- 42/2
y = 47
1+1 -> z
print(x)
[1] 21
print(y)
[1] 47
print(z)
[1] 2

Utilização de Funções



  • O R possui uma série de funções embutidas que podem ser utilizadas para realizar operações matemáticas, estatísticas, de manipulação de dados, entre outras, estas função são utilizadas da seguinte forma:
# Exemplo de utilização de funções
sqrt(16)
[1] 4
log(2.71828)
[1] 0.9999993
  • Além disso, é possível criar funções personalizadas no R, e estas funções podem ser utilizadas da seguinte forma:
# Exemplo de criação de funções
quadrado <- function(x) {
  return(x^2)
}

saida <- quadrado(5)
print(saida)
[1] 25

vetores, arrays, listas e matrizes


  • No R, é possível criar vetores, arrays e listas, que são estruturas de dados que podem armazenar múltiplos valores.
  • Um vetor é uma sequência de valores de um único tipo, e é criado utilizando a função c().
# Exemplo de criação de vetores
x <- c(1, 2, 3, 4, 5)

print(x)
[1] 1 2 3 4 5
  • Um array é uma estrutura de dados que pode armazenar múltiplos valores de diferentes tipos, e é criado utilizando a função array().
# Exemplo de criação de arrays
y <- array(c(1, "a", TRUE), dim = c(3, 1))

print(y)
     [,1]  
[1,] "1"   
[2,] "a"   
[3,] "TRUE"

vetores, arrays, listas e matrizes


  • Uma lista é uma estrutura de dados que pode armazenar múltiplos valores de diferentes tipos, e é criado utilizando a função list().
# Exemplo de criação de listas
z <- list(1, "a", TRUE)

print(z)
[[1]]
[1] 1

[[2]]
[1] "a"

[[3]]
[1] TRUE
  • Também temos o conceito de Matrizes, que são vetores com dimensões, ou seja, são vetores que possuem linhas e colunas, e são criadas utilizando a função matrix().
# Exemplo de criação de matrizes
m <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)

print(m)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

vetores, arrays, listas e matrizes


  • Para acessar os elementos de estruturas como um vetor, array, lista ou matriz, utilizamos colchetes [].

Vale uma observação, de que os índices em R começam em 1, e não em 0, como em algumas outras linguagens de programação.

# Exemplo de acesso a elementos de vetores
x <- c(1, 2, 3, 4, 5)

print(x[1])
[1] 1
print(x[3])
[1] 3
# Exemplo de acesso a elementos de matrizes
m <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)

print(m[1, 2])
[1] 3
print(m[2, 3])
[1] 6

vetores, arrays, listas e matrizes


Fonte: https://www.linkedin.com/pulse/trabalhando-com-objetos-r-vetores-matrizes-data-frames-luz-lopes/

Manipulação de dados com dplyr


  • O pacote dplyr é um pacote do R que fornece uma gramática para manipulação de dados, e é muito útil para transformar, filtrar e resumir dados.
  • O dplyr fornece um conjunto de funções que são fáceis de usar e que permitem realizar operações comuns de manipulação de dados de forma eficiente, dessa forma, para essa parte inicial de tratamento de dados, vamos focar na utilização desse pacote.
  • Vamos tentar sempre utilizar as funções da seguinte forma pacote::funcao() para evitar conflitos de funções com o mesmo nome em diferentes pacotes.

Manipulação de dados com dplyr


  • Vamos selecionar uma base de dados para utilizar as funções do dplyr:
dados <- nycflights13::flights

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

Manipulação de dados com dplyr


Conseguimos fazer filtragem de dados utilizando a função filter()

dados |> 
  dplyr::filter(month == 11, day == 1) |> 
  head(13)
# A tibble: 13 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    11     1        5           2359         6      352            345
 2  2013    11     1       35           2250       105      123           2356
 3  2013    11     1      455            500        -5      641            651
 4  2013    11     1      539            545        -6      856            827
 5  2013    11     1      542            545        -3      831            855
 6  2013    11     1      549            600       -11      912            923
 7  2013    11     1      550            600       -10      705            659
 8  2013    11     1      554            600        -6      659            701
 9  2013    11     1      554            600        -6      826            827
10  2013    11     1      554            600        -6      749            751
11  2013    11     1      555            600        -5      847            854
12  2013    11     1      555            600        -5      839            846
13  2013    11     1      555            600        -5      929            943
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Manipulação de dados com dplyr


Para usar filtragens de forma eficaz, você precisa saber como utilizar operadores de comparação e operadores lógicos.

Alguns operadores são:

  • Operadores de comparação:
    • == igual a
    • != diferente de
    • > maior que
    • < menor que

  • Operadores lógicos:
    • & e
    • | ou
    • ! não

Manipulação de dados com dplyr


  • Neste caso, podemos utilizar
dados |> 
  dplyr::filter(month == 11 & day == 1) |> 
  head(5)
# A tibble: 5 × 19
   year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
  <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
1  2013    11     1        5           2359         6      352            345
2  2013    11     1       35           2250       105      123           2356
3  2013    11     1      455            500        -5      641            651
4  2013    11     1      539            545        -6      856            827
5  2013    11     1      542            545        -3      831            855
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
dados |> 
  dplyr::filter(!(month != 11 | day != 1)) |> 
  head(5)
# A tibble: 5 × 19
   year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
  <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
1  2013    11     1        5           2359         6      352            345
2  2013    11     1       35           2250       105      123           2356
3  2013    11     1      455            500        -5      641            651
4  2013    11     1      539            545        -6      856            827
5  2013    11     1      542            545        -3      831            855
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Manipulação de dados com dplyr


  • Um problema que pode surgir para complicar as comparações, são os valores faltantes.
  • Os NAs (“not available”, em português, “não disponível”) são valores que não existem na base de dados.
  • Qualquer operação envolvendo um valor desconhecido, também será desconhecida.
NA > 5
[1] NA
10 == NA
[1] NA
NA + 10
[1] NA
NA == NA
[1] NA
  • Para verificar se um valor é faltante, pode utilizar a função is.na().
is.na(NA)
[1] TRUE
is.na(10)
[1] FALSE

Manipulação de dados com dplyr


  • A função filter() só considera as linhas em que a condição é verdadeira (TRUE), e descarta as linhas em que a condição é falsa (FALSE) ou NA. Se deseja preservar os valores faltantes, peça eles explicitamente:
dados |> 
  dplyr::filter(is.na(dep_time)) |> 
  head(10)
# A tibble: 10 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1       NA           1630        NA       NA           1815
 2  2013     1     1       NA           1935        NA       NA           2240
 3  2013     1     1       NA           1500        NA       NA           1825
 4  2013     1     1       NA            600        NA       NA            901
 5  2013     1     2       NA           1540        NA       NA           1747
 6  2013     1     2       NA           1620        NA       NA           1746
 7  2013     1     2       NA           1355        NA       NA           1459
 8  2013     1     2       NA           1420        NA       NA           1644
 9  2013     1     2       NA           1321        NA       NA           1536
10  2013     1     2       NA           1545        NA       NA           1910
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Manipulação de dados com dplyr


  • Outra função interessante é a arraange(), que serve para ordenar os dados.
  • Ele funciona semelhante ao filter(), mas ao invés de filtrar, ele ordena.
dados |> 
  dplyr::arrange(desc(dep_time)) |> 
  head(10)
# A tibble: 10 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    10    30     2400           2359         1      327            337
 2  2013    11    27     2400           2359         1      515            445
 3  2013    12     5     2400           2359         1      427            440
 4  2013    12     9     2400           2359         1      432            440
 5  2013    12     9     2400           2250        70       59           2356
 6  2013    12    13     2400           2359         1      432            440
 7  2013    12    19     2400           2359         1      434            440
 8  2013    12    29     2400           1700       420      302           2025
 9  2013     2     7     2400           2359         1      432            436
10  2013     2     7     2400           2359         1      443            444
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

Manipulação de dados com dplyr


  • é possível ordenar por mais de uma coluna, basta passar mais argumentos para a função arrange().
dados |> 
  dplyr::arrange(year, month, day) |> 
  head(10)
# A tibble: 10 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
  • Se deseja ordenar em forma decrescente, basta utilizar a função desc().

Manipulação de dados com dplyr


  • A função select() é utilizada para selecionar colunas de um data frame.
dados |> 
  dplyr::select(year, month, day) |> 
  head(15)
# A tibble: 15 × 3
    year month   day
   <int> <int> <int>
 1  2013     1     1
 2  2013     1     1
 3  2013     1     1
 4  2013     1     1
 5  2013     1     1
 6  2013     1     1
 7  2013     1     1
 8  2013     1     1
 9  2013     1     1
10  2013     1     1
11  2013     1     1
12  2013     1     1
13  2013     1     1
14  2013     1     1
15  2013     1     1

Manipulação de dados com dplyr


  • É possível excluir colunas também utilizando o select().
dados |> 
  dplyr::select(-year, -month, -day) |> 
  head(15)
# A tibble: 15 × 16
   dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier
      <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>  
 1      517            515         2      830            819        11 UA     
 2      533            529         4      850            830        20 UA     
 3      542            540         2      923            850        33 AA     
 4      544            545        -1     1004           1022       -18 B6     
 5      554            600        -6      812            837       -25 DL     
 6      554            558        -4      740            728        12 UA     
 7      555            600        -5      913            854        19 B6     
 8      557            600        -3      709            723       -14 EV     
 9      557            600        -3      838            846        -8 B6     
10      558            600        -2      753            745         8 AA     
11      558            600        -2      849            851        -2 B6     
12      558            600        -2      853            856        -3 B6     
13      558            600        -2      924            917         7 UA     
14      558            600        -2      923            937       -14 UA     
15      559            600        -1      941            910        31 AA     
# ℹ 9 more variables: flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
#   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

Manipulação de dados com dplyr


  • A função mutate() é utilizada para criar novas colunas a partir de colunas existentes.
dados |> 
  dplyr::mutate(speed = distance / air_time) |> 
  head(15)
# A tibble: 15 × 20
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
11  2013     1     1      558            600        -2      849            851
12  2013     1     1      558            600        -2      853            856
13  2013     1     1      558            600        -2      924            917
14  2013     1     1      558            600        -2      923            937
15  2013     1     1      559            600        -1      941            910
# ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>, speed <dbl>

Manipulação de dados com dplyr


  • Existe também a função summarise(), que é utilizada para resumir os dados.
  • A função summarise() é muito útil para resumir os dados e obter estatísticas descritivas.
dados |> 
  dplyr::summarise(mean_distance = mean(distance), 
                   mean_air_time = mean(air_time)) 
# A tibble: 1 × 2
  mean_distance mean_air_time
          <dbl>         <dbl>
1         1040.            NA
  • Observe que para a variável air_time o resultado foi NA, isso ocorreu porque a função mean() não sabe o que fazer com valores faltantes. Nesse caso, devemos passar como argumento para remover os valores faltantes.
dados |> 
  dplyr::summarise(mean_distance = mean(distance), 
                   mean_air_time = mean(air_time, na.rm = TRUE)) 
# A tibble: 1 × 2
  mean_distance mean_air_time
          <dbl>         <dbl>
1         1040.          151.

Manipulação de dados com dplyr


  • A função group_by() é utilizada para agrupar os dados por uma ou mais variáveis.
dados |> 
  dplyr::group_by(month) |> 
  dplyr::summarise(mean_distance = mean(distance), 
                   mean_air_time = mean(air_time, na.rm = TRUE)) 
# A tibble: 12 × 3
   month mean_distance mean_air_time
   <int>         <dbl>         <dbl>
 1     1         1007.          154.
 2     2         1001.          151.
 3     3         1012.          149.
 4     4         1039.          153.
 5     5         1041.          146.
 6     6         1057.          150.
 7     7         1059.          147.
 8     8         1062.          148.
 9     9         1041.          143.
10    10         1039.          149.
11    11         1050.          155.
12    12         1065.          163.

Manipulação de dados com dplyr


  • Contagens também é uma operação muito comum, e para isso, utilizamos a função n().
dados |> 
  dplyr::group_by(month) |> 
  dplyr::summarise(n = n())
# A tibble: 12 × 2
   month     n
   <int> <int>
 1     1 27004
 2     2 24951
 3     3 28834
 4     4 28330
 5     5 28796
 6     6 28243
 7     7 29425
 8     8 29327
 9     9 27574
10    10 28889
11    11 27268
12    12 28135

Manipulação de dados com dplyr


Também conseguimos agrupar por múltiplas variáveis, basta passar mais argumentos para a função group_by()

dados |> 
  dplyr::group_by(month, day) |> 
  dplyr::summarise(n = n())
# A tibble: 365 × 3
# Groups:   month [12]
   month   day     n
   <int> <int> <int>
 1     1     1   842
 2     1     2   943
 3     1     3   914
 4     1     4   915
 5     1     5   720
 6     1     6   832
 7     1     7   933
 8     1     8   899
 9     1     9   902
10     1    10   932
# ℹ 355 more rows

Manipulação de dados com dplyr


  • Então, quando estivermos trabalhando com manipulação de dados, vamos procurar sempre trabalhar com os pacotes do tidyverse, que são pacotes que seguem uma filosofia de organização de dados, e que são muito úteis para manipulação de dados. Entre eles, estão:

    • dplyr: para manipulação de dados
    • ggplot2: para visualização de dados
    • tidyr: para organização de dados
    • readr: para leitura de dados
    • purrr: para programação funcional, como mapeamento e redução
    • tibble: para organização de dados
    • stringr: para manipulação de strings
    • forcats: para manipulação de fatores




OBRIGADO!


Slide produzido com quarto