alt text

GET00130 - Métodos Computacionais para Estatística II

Jony Arrais Pinto Junior

Conteúdo da aula

  • Removendo linhas duplicadas;
  • Seleção de linhas e colunas;
  • Criação de variáveis;
  • Renomeando variáveis na base;
  • Ordenamento das saídas;
  • Estatísticas agregadas.

1 - Pacote dplyr

alt text

O pacote dplyr é um dos pacotes mais poderosos e populares do R, desenvolvido por Hadley Wickham.

O dplyr é um poderoso pacote R para manipular, limpar e resumir dados não estruturados. Ele utiliza C e C++ por trás da maioria das funções, o que geralmente torna o código mais eficiente. Em suma, faz a exploração de dados e manipulação de dados de forma fácil e rápida no R.

As principais funções do dplyr são:

  • distinct() - remove linhas repetidas,
  • rename() - renomeia variáveis,
  • filter() - filtra linhas,
  • select() - seleciona colunas,
  • mutate()/transmute() - cria/modifica colunas,
  • arrange() - ordena a base,
  • summarise() - sumariza a base.
# Carregando o pacote dplyr por meio do pacote tidyverse
library(tidyverse)

1.1 - Função distinct

Esta função retorna somente linhas distinstas de um tibble.

É possível fazer essa seleção utilizando todas as variáveis ou somente um subconjunto delas.

Uma das funcionalidades desta função é verificar se existem unidades experimentais duplicadas na base. Vale ressaltar que é necessário que exista uma variável que identifique de forma única (uma chave) cada unidade experimental ou um conjunto de variáveis na qual você acredita que não possa assumir um mesmo valor para mais de uma unidade experimental.

Atividade: Importe o arquivo PNUD.csv e guarde em um objeto chamado basePNUD.

A base importada contém dados dos municípios brasileiros e contém variáveis como idh, indíce de gini e tamanho da população, entre outras, para três períodos distintos (1991, 2000 e 2010).

#Visualizando as linhas iniciais da base
basePNUD
# A tibble: 16,694 x 14
     ano muni  uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini   pop
   <dbl> <chr> <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
 1  1991 ALTA… RO    Norte  0.329  0.112  0.617  0.516    62.0 198.   0.63 22835
 2  1991 ARIQ… RO    Norte  0.432  0.199  0.684  0.593    66.0 319.   0.57 55018
 3  1991 CABI… RO    Norte  0.309  0.108  0.636  0.43     63.2 116.   0.7   5846
 4  1991 CACO… RO    Norte  0.407  0.171  0.667  0.593    65.0 320.   0.66 66534
 5  1991 CERE… RO    Norte  0.386  0.167  0.629  0.547    62.7 240.   0.6  19030
 6  1991 COLO… RO    Norte  0.376  0.151  0.658  0.536    64.5 225.   0.62 25070
 7  1991 CORU… RO    Norte  0.203  0.039  0.572  0.373    59.3  81.4  0.59 10737
 8  1991 COST… RO    Norte  0.425  0.22   0.629  0.553    62.8 250.   0.65  6902
 9  1991 ESPI… RO    Norte  0.388  0.159  0.653  0.561    64.2 263.   0.63 22505
10  1991 GUAJ… RO    Norte  0.468  0.247  0.662  0.625    64.7 391.   0.6  31240
# … with 16,684 more rows, and 2 more variables: lat <dbl>, lon <dbl>

Vamos supor, que as variáveis existentes no objeto basePNUD identificam de forma única um município em um determinado ano.

Como checar se existem linhas repetidas que deveriam ser eliminadas da base?

#Checando a dimensão de basePNUD
dim(basePNUD)
[1] 16694    14
#Eliminando as linhas repetidas considerando toda a base de dados
basePNUD = basePNUD |>
  distinct()

#Checando a dimensão de basePNUD
basePNUD
# A tibble: 16,686 x 14
     ano muni  uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini   pop
   <dbl> <chr> <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
 1  1991 ALTA… RO    Norte  0.329  0.112  0.617  0.516    62.0 198.   0.63 22835
 2  1991 ARIQ… RO    Norte  0.432  0.199  0.684  0.593    66.0 319.   0.57 55018
 3  1991 CABI… RO    Norte  0.309  0.108  0.636  0.43     63.2 116.   0.7   5846
 4  1991 CACO… RO    Norte  0.407  0.171  0.667  0.593    65.0 320.   0.66 66534
 5  1991 CERE… RO    Norte  0.386  0.167  0.629  0.547    62.7 240.   0.6  19030
 6  1991 COLO… RO    Norte  0.376  0.151  0.658  0.536    64.5 225.   0.62 25070
 7  1991 CORU… RO    Norte  0.203  0.039  0.572  0.373    59.3  81.4  0.59 10737
 8  1991 COST… RO    Norte  0.425  0.22   0.629  0.553    62.8 250.   0.65  6902
 9  1991 ESPI… RO    Norte  0.388  0.159  0.653  0.561    64.2 263.   0.63 22505
10  1991 GUAJ… RO    Norte  0.468  0.247  0.662  0.625    64.7 391.   0.6  31240
# … with 16,676 more rows, and 2 more variables: lat <dbl>, lon <dbl>

Vejam que 8 linhas foram removidas do objeto.

Se aplicarmos o distinct em uma variável específica, ele retorna um tibble que contém todos os valores distintos daquela variável.

#verificando todos os valores distintos da coluna ano
basePNUD |>
  distinct(ano)
# A tibble: 3 x 1
    ano
  <dbl>
1  1991
2  2000
3  2010

Se aplicarmos o distinct em mais de uma variável, ele retorna um tibble que contém todas as combinações distintas observadas daquelas variáveis.

#verificando todos os valores distintos dos cruzamentos de ano e UF
basePNUD |>
  distinct(ano,uf)
# A tibble: 81 x 2
     ano uf   
   <dbl> <chr>
 1  1991 RO   
 2  1991 AC   
 3  1991 AM   
 4  1991 RR   
 5  1991 PA   
 6  1991 AP   
 7  1991 TO   
 8  1991 MA   
 9  1991 PI   
10  1991 CE   
# … with 71 more rows

1.2 - Função rename

Esta função renomeia nomes de colunas (variáveis).

#renomeando a variável lat por Latitude e guardando tudo no objeto basePNUD
basePNUD = basePNUD |>
  rename(Latitude = lat)

basePNUD
# A tibble: 16,686 x 14
     ano muni  uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini   pop
   <dbl> <chr> <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
 1  1991 ALTA… RO    Norte  0.329  0.112  0.617  0.516    62.0 198.   0.63 22835
 2  1991 ARIQ… RO    Norte  0.432  0.199  0.684  0.593    66.0 319.   0.57 55018
 3  1991 CABI… RO    Norte  0.309  0.108  0.636  0.43     63.2 116.   0.7   5846
 4  1991 CACO… RO    Norte  0.407  0.171  0.667  0.593    65.0 320.   0.66 66534
 5  1991 CERE… RO    Norte  0.386  0.167  0.629  0.547    62.7 240.   0.6  19030
 6  1991 COLO… RO    Norte  0.376  0.151  0.658  0.536    64.5 225.   0.62 25070
 7  1991 CORU… RO    Norte  0.203  0.039  0.572  0.373    59.3  81.4  0.59 10737
 8  1991 COST… RO    Norte  0.425  0.22   0.629  0.553    62.8 250.   0.65  6902
 9  1991 ESPI… RO    Norte  0.388  0.159  0.653  0.561    64.2 263.   0.63 22505
10  1991 GUAJ… RO    Norte  0.468  0.247  0.662  0.625    64.7 391.   0.6  31240
# … with 16,676 more rows, and 2 more variables: Latitude <dbl>, lon <dbl>

Percebemos que no objeto basePNUD a coluna que anteriormente estava nomeada como lat, agora está nomeada como Latitude.

1.3 - Função select

Esta função seleciona coluna (variáveis).

É possível fazer essa seleção utilizando nomes, índices, intervalos de variáveis ou utilizar as funções starts_with(x), ends_with, contains(x), matches(x), one_of(x) para selecionar subconjunto de variáveis de forma esperta.

#Selecionando todas as variáveis entre ano e região e a variável rdpc
basePNUD|>
  select(ano:regiao,rdpc)
# A tibble: 16,686 x 5
     ano muni                  uf    regiao  rdpc
   <dbl> <chr>                 <chr> <chr>  <dbl>
 1  1991 ALTA FLORESTA D'OESTE RO    Norte  198. 
 2  1991 ARIQUEMES             RO    Norte  319. 
 3  1991 CABIXI                RO    Norte  116. 
 4  1991 CACOAL                RO    Norte  320. 
 5  1991 CEREJEIRAS            RO    Norte  240. 
 6  1991 COLORADO DO OESTE     RO    Norte  225. 
 7  1991 CORUMBIARA            RO    Norte   81.4
 8  1991 COSTA MARQUES         RO    Norte  250. 
 9  1991 ESPIGÃO D'OESTE       RO    Norte  263. 
10  1991 GUAJARÁ-MIRIM         RO    Norte  391. 
# … with 16,676 more rows
#Selecionando todas as variáveis com excessão de rdpc e regiao
basePNUD|>
  select(-c(regiao, rdpc))
# A tibble: 16,686 x 12
     ano muni      uf     idhm idhm_e idhm_l idhm_r espvida  gini   pop Latitude
   <dbl> <chr>     <chr> <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl>    <dbl>
 1  1991 ALTA FLO… RO    0.329  0.112  0.617  0.516    62.0  0.63 22835   -11.9 
 2  1991 ARIQUEMES RO    0.432  0.199  0.684  0.593    66.0  0.57 55018    -9.91
 3  1991 CABIXI    RO    0.309  0.108  0.636  0.43     63.2  0.7   5846   -13.5 
 4  1991 CACOAL    RO    0.407  0.171  0.667  0.593    65.0  0.66 66534   -11.4 
 5  1991 CEREJEIR… RO    0.386  0.167  0.629  0.547    62.7  0.6  19030   -13.2 
 6  1991 COLORADO… RO    0.376  0.151  0.658  0.536    64.5  0.62 25070   -13.1 
 7  1991 CORUMBIA… RO    0.203  0.039  0.572  0.373    59.3  0.59 10737   -13.0 
 8  1991 COSTA MA… RO    0.425  0.22   0.629  0.553    62.8  0.65  6902   -12.4 
 9  1991 ESPIGÃO … RO    0.388  0.159  0.653  0.561    64.2  0.63 22505   -11.5 
10  1991 GUAJARÁ-… RO    0.468  0.247  0.662  0.625    64.7  0.6  31240   -10.8 
# … with 16,676 more rows, and 1 more variable: lon <dbl>
#Selecionando a variável ano e todas as variáveis que comecem com idhm e salvando no objeto baseIDH
baseIDH = basePNUD |>
  select(ano, starts_with('idhm'))

baseIDH
# A tibble: 16,686 x 5
     ano  idhm idhm_e idhm_l idhm_r
   <dbl> <dbl>  <dbl>  <dbl>  <dbl>
 1  1991 0.329  0.112  0.617  0.516
 2  1991 0.432  0.199  0.684  0.593
 3  1991 0.309  0.108  0.636  0.43 
 4  1991 0.407  0.171  0.667  0.593
 5  1991 0.386  0.167  0.629  0.547
 6  1991 0.376  0.151  0.658  0.536
 7  1991 0.203  0.039  0.572  0.373
 8  1991 0.425  0.22   0.629  0.553
 9  1991 0.388  0.159  0.653  0.561
10  1991 0.468  0.247  0.662  0.625
# … with 16,676 more rows
#É possível ordenar as variáveis na base com a função select
basePNUD |>
  select(muni, ano, everything())
# A tibble: 16,686 x 14
   muni    ano uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini   pop
   <chr> <dbl> <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
 1 ALTA…  1991 RO    Norte  0.329  0.112  0.617  0.516    62.0 198.   0.63 22835
 2 ARIQ…  1991 RO    Norte  0.432  0.199  0.684  0.593    66.0 319.   0.57 55018
 3 CABI…  1991 RO    Norte  0.309  0.108  0.636  0.43     63.2 116.   0.7   5846
 4 CACO…  1991 RO    Norte  0.407  0.171  0.667  0.593    65.0 320.   0.66 66534
 5 CERE…  1991 RO    Norte  0.386  0.167  0.629  0.547    62.7 240.   0.6  19030
 6 COLO…  1991 RO    Norte  0.376  0.151  0.658  0.536    64.5 225.   0.62 25070
 7 CORU…  1991 RO    Norte  0.203  0.039  0.572  0.373    59.3  81.4  0.59 10737
 8 COST…  1991 RO    Norte  0.425  0.22   0.629  0.553    62.8 250.   0.65  6902
 9 ESPI…  1991 RO    Norte  0.388  0.159  0.653  0.561    64.2 263.   0.63 22505
10 GUAJ…  1991 RO    Norte  0.468  0.247  0.662  0.625    64.7 391.   0.6  31240
# … with 16,676 more rows, and 2 more variables: Latitude <dbl>, lon <dbl>

A função select também serve para ordenar as variáveis na base, uma vez que ela monta a nova base em função do ordenamento das variáveis selecionadas. Aqui a função everything usada em select permite com que não seja digitada o nome das demais variáveis. Deste modo, o comando acima, serviu para fazer com que as variáveis muni e ano fossem as primeiras variáveis da base e em seguida as demais viesem na ordem que já se encontravam.

1.4 - Função filter()

Essa função serve para filtrar linhas (selecionar linhas segundo algum critério).

#Selecionando as variáveis ano, muni e uf e em seguida filtrando somente as linhas do estado do CE
basePNUD |>
  select(ano,muni,uf) |>
  filter(uf == 'CE')
# A tibble: 552 x 3
     ano muni              uf   
   <dbl> <chr>             <chr>
 1  1991 ABAIARA           CE   
 2  1991 ACARAPE           CE   
 3  1991 ACARAÚ            CE   
 4  1991 ACOPIARA          CE   
 5  1991 AIUABA            CE   
 6  1991 ALCÂNTARAS        CE   
 7  1991 ALTANEIRA         CE   
 8  1991 ALTO SANTO        CE   
 9  1991 AMONTADA          CE   
10  1991 ANTONINA DO NORTE CE   
# … with 542 more rows

Vale resslatar que o símbolo == significa igual e = significa recebe no R.

#Selecionando as variáveis ano, regiao, uf e idhm e em seguida filtrando as linhas que são dos estados do CE ou RJ no ano de 2010.
basePNUD |>
  select(ano,regiao,uf,idhm) |>
  filter(uf %in% c('CE', 'RJ') , ano == 2010)
# A tibble: 275 x 4
     ano regiao   uf     idhm
   <dbl> <chr>    <chr> <dbl>
 1  2010 Nordeste CE    0.628
 2  2010 Nordeste CE    0.606
 3  2010 Nordeste CE    0.601
 4  2010 Nordeste CE    0.595
 5  2010 Nordeste CE    0.569
 6  2010 Nordeste CE    0.6  
 7  2010 Nordeste CE    0.602
 8  2010 Nordeste CE    0.601
 9  2010 Nordeste CE    0.606
10  2010 Nordeste CE    0.599
# … with 265 more rows

Percebemos que no resultado final foram apresentadas somente as variáveis selecionadas e as linhas que satisfaziam a condição especificada: ser um município do estado do RJ ou CE no ano de 2010.

#Selecionando as variáveis ano, regiao, uf e idhm e em seguida filtrando as linhas que ou (são dos estados do CE ou RJ e possuem idhm > 0,75) ou (são dos estados de SP ou MG e possuem idhm > 0,8)  no ano de 2010.
basePNUD |>
  select(ano,regiao,uf,idhm) |>
  filter( uf %in% c('CE', 'RJ') & idhm > 0.75 | uf %in% c('SP', 'MG') & idhm > 0.8, ano == 2010)
# A tibble: 34 x 4
     ano regiao   uf     idhm
   <dbl> <chr>    <chr> <dbl>
 1  2010 Nordeste CE    0.754
 2  2010 Sudeste  MG    0.81 
 3  2010 Sudeste  MG    0.813
 4  2010 Sudeste  RJ    0.761
 5  2010 Sudeste  RJ    0.764
 6  2010 Sudeste  RJ    0.753
 7  2010 Sudeste  RJ    0.765
 8  2010 Sudeste  RJ    0.753
 9  2010 Sudeste  RJ    0.837
10  2010 Sudeste  RJ    0.768
# … with 24 more rows

Novamente, percebemos que a combinação das funções select e filter foram utilizadas para selecionar as variáveis ano, regiao, uf e idhm e selecionar somente os municípios que eram do estado do Rio de Janeiro ou Ceará e possuíam IDHM supeior a 0,75 ou eram do estado do Minas Gerais ou São Paulo e possuíam IDHM supeior a 0,8 no ano de 2010.

#Selecionando as variáveis ano, muni, uf e idhm e em seguida filtrando as linhas que começam com a letra Z (str_detect - pacote stringr)
basePNUD |>
  select(ano,muni,uf,idhm) |>
  filter(str_detect(muni,"^Z"))
# A tibble: 12 x 4
     ano muni     uf     idhm
   <dbl> <chr>    <chr> <dbl>
 1  1991 ZÉ DOCA  MA    0.322
 2  1991 ZABELÊ   PB    0.324
 3  1991 ZACARIAS SP    0.488
 4  1991 ZORTÉA   SC    0.402
 5  2000 ZÉ DOCA  MA    0.421
 6  2000 ZABELÊ   PB    0.484
 7  2000 ZACARIAS SP    0.64 
 8  2000 ZORTÉA   SC    0.586
 9  2010 ZÉ DOCA  MA    0.595
10  2010 ZABELÊ   PB    0.623
11  2010 ZACARIAS SP    0.729
12  2010 ZORTÉA   SC    0.761

A função str_detec pertence ao pacote stringr. O ^ serve para indicar que a procura pelo Z é no início da palavra.

1.5 - Função mutate

Função que permite criar/modificar variáveis na base de dados existente.

#Selecionando as variáveis muni, rdpc, pop, idhm_l e espvida e em seguida criando as variáveis renda, razao e renda2
basePNUD |>
  select(muni,rdpc,pop,idhm_l,espvida) |>
  mutate(renda = rdpc * pop, 
         razao = idhm_l / espvida,
         renda2 = renda/razao)
# A tibble: 16,686 x 8
   muni                   rdpc   pop idhm_l espvida     renda   razao     renda2
   <chr>                 <dbl> <dbl>  <dbl>   <dbl>     <dbl>   <dbl>      <dbl>
 1 ALTA FLORESTA D'OESTE 198.  22835  0.617    62.0  4531834. 0.00995     4.55e8
 2 ARIQUEMES             319.  55018  0.684    66.0 17576600. 0.0104      1.70e9
 3 CABIXI                116.   5846  0.636    63.2   680357. 0.0101      6.76e7
 4 CACOAL                320.  66534  0.667    65.0 21306848. 0.0103      2.08e9
 5 CEREJEIRAS            240.  19030  0.629    62.7  4569103  0.0100      4.56e8
 6 COLORADO DO OESTE     225.  25070  0.658    64.5  5636237. 0.0102      5.52e8
 7 CORUMBIARA             81.4 10737  0.572    59.3   873777. 0.00964     9.06e7
 8 COSTA MARQUES         250.   6902  0.629    62.8  1726052. 0.0100      1.72e8
 9 ESPIGÃO D'OESTE       263.  22505  0.653    64.2  5919490. 0.0102      5.82e8
10 GUAJARÁ-MIRIM         391.  31240  0.662    64.7 12226399. 0.0102      1.20e9
# … with 16,676 more rows

A função mutate permite criar novas variáveis na base de dados ao mesmo tempo, inclusive nos permite usar uma das variáveis que estão sendo criadas para criar uma outra nova variável.

1.6 - Função transmute

Função que permite criar um novo objeto com as variáveis criadas de uma base de dados existente. A diferença para o mutate é que o resultado final irá conter somente as variáveis criadas.

#Selecionando as variáveis muni, rdpc, pop, idhm_l e espvida e em seguida criando as variáveis renda, razao e renda2
basePNUD |>
  select(muni,rdpc,pop,idhm_l,espvida) |>
  transmute(renda = rdpc * pop, 
         razao = idhm_l / espvida,
         renda2 = renda/razao)
# A tibble: 16,686 x 3
       renda   razao      renda2
       <dbl>   <dbl>       <dbl>
 1  4531834. 0.00995  455460344.
 2 17576600. 0.0104  1696501699.
 3   680357. 0.0101    67565060.
 4 21306848. 0.0103  2077337835.
 5  4569103  0.0100   455675407.
 6  5636237. 0.0102   552145688.
 7   873777. 0.00964   90616180.
 8  1726052. 0.0100   172221039.
 9  5919490. 0.0102   581796138.
10 12226399. 0.0102  1195121248.
# … with 16,676 more rows

1.7 - Função arrange

A função serve para ordenar (as linhas) um objeto tibble.

#filtrando os dados de 2010 e ordenando pela esperanca de vida de forma crescente
basePNUD |>
  filter(ano == 2010) |>
  arrange(espvida)
# A tibble: 5,562 x 14
     ano muni  uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini   pop
   <dbl> <chr> <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
 1  2010 CACI… PB    Norde… 0.523  0.425  0.672  0.501    65.3  181.  0.53  6689
 2  2010 ROTE… AL    Norde… 0.505  0.365  0.672  0.524    65.3  209.  0.47  6555
 3  2010 OLHO… AL    Norde… 0.503  0.399  0.673  0.473    65.4  152.  0.59  4827
 4  2010 MATA… PB    Norde… 0.536  0.427  0.675  0.533    65.5  220.  0.48  7257
 5  2010 JOAQ… PE    Norde… 0.554  0.449  0.676  0.561    65.6  263.  0.48 15584
 6  2010 POÇÃO PE    Norde… 0.528  0.402  0.677  0.542    65.6  234.  0.54 10783
 7  2010 OLIV… AL    Norde… 0.493  0.345  0.677  0.513    65.6  195.  0.56 10797
 8  2010 BREJ… MA    Norde… 0.519  0.408  0.677  0.507    65.6  188.  0.48  5349
 9  2010 PAUL… MA    Norde… 0.549  0.447  0.677  0.546    65.6  239.  0.58 19115
10  2010 JURI… PB    Norde… 0.548  0.448  0.677  0.544    65.6  236.  0.53  9996
# … with 5,552 more rows, and 2 more variables: Latitude <dbl>, lon <dbl>

Se quisermos apresentar em ordem decrescente, precisamos usar a função desc na variável expectativa de vida dentro da função arrange.

#filtrando os dados de 2010 e ordenando pela esperanca de vida de forma decrescente
basePNUD |>
  filter(ano == 2010)  |>
  arrange(desc(espvida))
# A tibble: 5,562 x 14
     ano muni        uf    regiao  idhm idhm_e idhm_l idhm_r espvida  rdpc  gini
   <dbl> <chr>       <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl>
 1  2010 BLUMENAU    SC    Sul    0.806  0.722  0.894  0.812    78.6 1253.  0.46
 2  2010 BRUSQUE     SC    Sul    0.795  0.707  0.894  0.794    78.6 1117.  0.4 
 3  2010 BALNEÁRIO … SC    Sul    0.845  0.789  0.894  0.854    78.6 1626.  0.52
 4  2010 RIO DO SUL  SC    Sul    0.802  0.727  0.894  0.793    78.6 1114.  0.45
 5  2010 RANCHO QUE… SC    Sul    0.753  0.644  0.893  0.743    78.6  814.  0.42
 6  2010 RIO DO OES… SC    Sul    0.754  0.625  0.892  0.769    78.5  957.  0.47
 7  2010 IOMERÊ      SC    Sul    0.795  0.749  0.891  0.754    78.4  874.  0.33
 8  2010 JOAÇABA     SC    Sul    0.827  0.771  0.891  0.823    78.4 1338.  0.54
 9  2010 NOVA TRENTO SC    Sul    0.748  0.628  0.891  0.749    78.4  848.  0.35
10  2010 PORTO UNIÃO SC    Sul    0.786  0.724  0.891  0.752    78.4  864.  0.53
# … with 5,552 more rows, and 3 more variables: pop <dbl>, Latitude <dbl>,
#   lon <dbl>

1.8 - Função summarise

Esta função sumariza variáveis da base. Ela aplica uma função às variáveis. Geralmente ela é utilizada em conjunto com a função group_by.

#Calculando o número de municípios por região e a média da espectativa de vida para todas as regiões em todos os anos e ordenando o resultando em ordem decrescente pelo valor da espectativa de vida
basePNUD |>
  group_by(ano, regiao) |>
  summarise(n = n(), 
            espvida = mean(espvida, na.rm = TRUE)) |>
  arrange(regiao,desc(espvida))
`summarise()` has grouped output by 'ano'. You can override using the `.groups` argument.
# A tibble: 15 x 4
# Groups:   ano [3]
     ano regiao           n espvida
   <dbl> <chr>        <int>   <dbl>
 1  2010 Centro-Oeste   465    74.3
 2  2000 Centro-Oeste   465    70.0
 3  1991 Centro-Oeste   465    65.1
 4  2010 Nordeste      1794    70.3
 5  2000 Nordeste      1794    64.2
 6  1991 Nordeste      1794    58.5
 7  2010 Norte          449    71.8
 8  2000 Norte          449    66.4
 9  1991 Norte          449    61.6
10  2010 Sudeste       1667    74.7
11  2000 Sudeste       1667    70.8
12  1991 Sudeste       1667    66.6
13  2010 Sul           1187    75.1
14  2000 Sul           1187    71.6
15  1991 Sul           1187    67.9

A função n() seria equivalente a função length(). Pelo resultado final, percebemos que no ano de 2010 existiam 465 municípios na região Centro-oeste e a expectativa de vida média dos municípios era de 74,3 anos.

A função summarise será extremamente útil para calcularmos medidas resumos de interesse para subgrupos da base de dados.

Desafio

  • Faça a leitura da base voos.

  • Crie uma base que contenha somente as variáveis Year (ano da partida), Month (mês da partida), DepTime (Horário real de partida), ArrTime (Horário real de chegada), FlightNum (Número do voo), Distance (Distância percorrida entre aeroportos em milhas), Origin (Aeroporto de origem), TailNum (Número da cauda do avião), ArrDelay (Atraso de chagada em minutos - valores negativos representam adiantamentos).

  • Renomeie as variáveis usando nomes pequenos em portugês.

  • Transforme a distância para Km.

  • Calcule a distancia máxima percorrida, o atraso de chegada medio e o número de viagens de cada avião e salve estas informaçoes em um arquivo com extensão csv.

  • Calcule o atraso médio de cada aeronave para todas as combinações de meses e anos e salve o arquivo em txt.