knitr::opts_chunk$set(knitr.table.format = "html",
                      cache =  TRUE, 
                      echo = TRUE,
                      warning = FALSE,
                      message = FALSE)

Proposta

Para esta lista de exercícios utilizaremos o banco de dados “gapminder”, que possui informações demográficas sobre países e continentes, de 1952 a 2007. A ideia é que ao finalizar esta lista, você tenha uma série de objetos e informações interessantes que permitirão a criação do seu primeiro projeto de portfólio!

Passo 1 - Instalar e carregar os pacotes

  1. Instale o pacote gapminder com a função install.packages()

  2. Com a função library(), carregue os pacotes:

    • tidyverse

    • scales

    • gapminder

  3. Atribua o banco de dados gapminder a um objeto de nome “bd_demog”

# Resposta aqui

#1 
# install.packages('gapminder')

#2
library(gapminder)
library(tidyverse)
library(scales)

#3 
bd_demog <- gapminder

Passo 2 - Estrutura do banco de dados

  1. Utilize a função colnames(), head(), tail() e View() no banco de dados. Pense sobre o que cada uma delas faz.
  2. Utilizando a função str(), analise a estrutura do banco de dados. As variáveis estão no formato correto?
  3. Utilize a função summary() no banco de dados e reflita sobre quais das informações podem ser aproveitadas e quais precisam de maior aprofundamento. Faz sentido olhar para a expectativa de vida de todos os países ao mesmo tempo, por exemplo?
#Respostas aqui

#1
colnames(bd_demog)
## [1] "country"   "continent" "year"      "lifeExp"   "pop"       "gdpPercap"
head(bd_demog)
tail(bd_demog)
View(bd_demog)

#2
str(bd_demog)
## tibble [1,704 x 6] (S3: tbl_df/tbl/data.frame)
##  $ country  : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ year     : int [1:1704] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
##  $ lifeExp  : num [1:1704] 28.8 30.3 32 34 36.1 ...
##  $ pop      : int [1:1704] 8425333 9240934 10267083 11537966 13079460 14880372 12881816 13867957 16317921 22227415 ...
##  $ gdpPercap: num [1:1704] 779 821 853 836 740 ...
#3 
summary(bd_demog)
##         country        continent        year         lifeExp     
##  Afghanistan:  12   Africa  :624   Min.   :1952   Min.   :23.60  
##  Albania    :  12   Americas:300   1st Qu.:1966   1st Qu.:48.20  
##  Algeria    :  12   Asia    :396   Median :1980   Median :60.71  
##  Angola     :  12   Europe  :360   Mean   :1980   Mean   :59.47  
##  Argentina  :  12   Oceania : 24   3rd Qu.:1993   3rd Qu.:70.85  
##  Australia  :  12                  Max.   :2007   Max.   :82.60  
##  (Other)    :1632                                                
##       pop              gdpPercap       
##  Min.   :6.001e+04   Min.   :   241.2  
##  1st Qu.:2.794e+06   1st Qu.:  1202.1  
##  Median :7.024e+06   Median :  3531.8  
##  Mean   :2.960e+07   Mean   :  7215.3  
##  3rd Qu.:1.959e+07   3rd Qu.:  9325.5  
##  Max.   :1.319e+09   Max.   :113523.1  
## 

Passo 3 - Filtragem de um continente para análise

  1. Utilizando a função filter(), do dplyr, escolha um continente para aprofundar sua análise e salve num objeto separado.
  2. Utilize a função summary() neste novo objeto. As estatísticas básicas mostradas fazem mais sentido agora?
# Respostas aqui

#1 
americas <- bd_demog %>% 
  filter(continent == 'Americas')

#2 
summary(americas)
##       country       continent        year         lifeExp     
##  Argentina: 12   Africa  :  0   Min.   :1952   Min.   :37.58  
##  Bolivia  : 12   Americas:300   1st Qu.:1966   1st Qu.:58.41  
##  Brazil   : 12   Asia    :  0   Median :1980   Median :67.05  
##  Canada   : 12   Europe  :  0   Mean   :1980   Mean   :64.66  
##  Chile    : 12   Oceania :  0   3rd Qu.:1993   3rd Qu.:71.70  
##  Colombia : 12                  Max.   :2007   Max.   :80.65  
##  (Other)  :228                                                
##       pop              gdpPercap    
##  Min.   :   662850   Min.   : 1202  
##  1st Qu.:  2962359   1st Qu.: 3428  
##  Median :  6227510   Median : 5466  
##  Mean   : 24504795   Mean   : 7136  
##  3rd Qu.: 18340309   3rd Qu.: 7830  
##  Max.   :301139947   Max.   :42952  
## 

Passo 4 - Análise descritiva

4.1. Média da expectativa de vida por país

Qual é a média da expectativa de vida para cada país no período? Quais os três países que possuem a maior expectativa de vida? Quais três tem as menores? Salve o resultado num objeto separado chamado “seucontinente_lifeExp”

Dicas:

  1. Para responder à primeira questão, utilize a função group_by() para a coluna country e então utilize o summarise() com o argumento mean() para calcular as médias agrupadas.
  2. Utilizando a função arrange(), reordene as expectativas de vida encontradas em ordem decrescente, para responder a segunda parte da questão.
  3. Salve o resultado desse código num banco chamado “seucontinente_lifeExp”
# Respostas aqui
americas_lifeExp <- americas %>% 
  group_by(country) %>% 
  summarise(media_lifeExp = mean(lifeExp)) %>% 
  arrange(desc(media_lifeExp))


americas_lifeExp

4.2. Identificar os países com expectativas de vida inferiores e superiores a média dos países.

Crie uma nova coluna no banco seucontinente_lifeExp com um identificador de países que estão acima ou abaixo da média da coluna media_lifeExp.

Dicas:

  1. Utilize a função mean() para identificar a média da coluna media_lifeExp
  2. Utilize as funções mutate() e case_when(), para criar uma nova variável chamada classificacao_lifeExp, que tem dois níveis de resposta: “Abaixo da média” e “Acima da média”.
#1
mean(americas_lifeExp$media_lifeExp)
## [1] 64.65874
#2
americas_lifeExp <- americas_lifeExp %>% 
  mutate(classificacao_lifeExp =
           case_when(media_lifeExp < mean(media_lifeExp) ~ 'Abaixo da média',
                     media_lifeExp > mean(media_lifeExp) ~ 'Acima da média'))

americas_lifeExp

Passo 5 - Visualizações com o ggplot2

5.1. Barras

Utilize o vetor que contém as médias de expectativa de vida por país e crie um gráfico de barras.

Dicas:

  1. Como as expectativas de vida vão ficar no eixo Y e o geom_bar() não aceita a definição de um eixo Y, utilize o geom_col().
americas_lifeExp %>% 
  ggplot(mapping = aes(x = fct_reorder(country, media_lifeExp),
                       y = media_lifeExp)) +
  geom_col() +
  coord_flip()

#Estética

americas_lifeExp %>% 
  ggplot(mapping = aes(x = fct_reorder(country, media_lifeExp),
                       y = media_lifeExp)) +
  geom_col(fill = 'darkcyan') +
  coord_flip() +
  scale_y_continuous(limits = c(0,80)) +
  labs(title = 'Média da expectativa de vida para os países das Américas
no período de 1952 a 2007',
       y = 'Média da expectativa de vida',
       x = 'Países',
       caption = 'MQuinho de inverno - Meios Jr.') +
  theme_bw() +
  theme(plot.title = element_text(face = "bold",                       
                                  margin = margin(10, 0, 5, 0),
                                  size = 13),
        axis.title.x = element_text(margin = margin(t = 10),
                                    size = 12,
                                    face = 'italic'),
        axis.title.y = element_text(margin = margin(r = 10),
                                    size = 12,
                                    face = 'italic'),
        plot.caption = element_text(size = 10))

5.2. Histograma

Utilize o vetor do seu continente para criar um histograma de todas as expectativas de vida neste continente.

Dicas:

  1. O geom utilizado é o geom_histogram()
americas %>% 
  ggplot(mapping = aes(x = lifeExp)) +
  geom_histogram()

# Estética
americas %>% 
  ggplot(mapping = aes(x = lifeExp)) +
  geom_histogram(colour = 'grey2') +
  labs(title = 'Distribuição da expectativa de vida países das Américas no 
período de 1952 a 2007',
       y = 'Contagem',
       x = 'Expectativa de vida',
       caption = 'MQuinho de inverno - Meios Jr.') +
  theme_bw() +
  theme(plot.title = element_text(face = "bold",                       
                                  margin = margin(10, 0, 5, 0),
                                  size = 13),
        axis.title.x = element_text(margin = margin(t = 10),
                                    size = 11,
                                    face = 'italic'),
        axis.title.y = element_text(margin = margin(r = 10),
                                    size = 11,
                                    face = 'italic'),
        plot.caption = element_text(size = 10))

5.3. Boxplot

Escolha três países para comparar a variável de PIB per capita (gdpPercap) e crie um boxplot que contenha no eixo X os países, no eixo Y a variável gdpPercap e que as cores das caixinhas (fill) sejam pintadas de acordo com o país.

Dicas:

  1. O geom utilizado é o geom_boxplot()
americas %>% 
  filter(country %in% c('Brazil', 'United States', 'Canada')) %>% 
  ggplot(mapping = aes(x = country,
                       y = gdpPercap,
                       fill = country)) +
  geom_boxplot()

# Estética
americas %>% 
  filter(country == c('Brazil', 'United States', 'Canada')) %>% 
  ggplot(mapping = aes(x = country,
                       y = gdpPercap,
                       fill = country)) +
  geom_boxplot() +
  theme_bw() +
  scale_fill_brewer(palette = 'Dark2') +
  labs(title = 'PIB per capita, em US$, para três países das américas para os anos
de 1952 a 2007', 
       y = 'PIB per capita',
       x = '',
       fill = 'Países',
       caption = "MQuinho de inverno - Meios Jr.") +
  theme(plot.title = element_text(face = "bold",
                                  margin = margin(10, 0, 10, 0),
                                  size = 12),
        axis.title.x = element_text(margin = margin(t = 5),
                                    size = 12,
                                    face = 'italic'),
        axis.title.y = element_text(margin = margin(r = 10),
                                    size = 12,
                                    face = 'italic'),
        plot.caption = element_text(size = 11))

5.4. Diagrama de dispersão

Crie um gráfico de dispersão entre as variáveis de PIB per capita e expectativa de vida. As variáveis estão correlacionadas? Adicione uma linha de suavização para identificar o formato da distribuição.

Dicas:

  1. Os geoms utilizados aqui são: geom_point() para criação do diagrama de dispersão e geom_smooth() para criação da linha de suavização
  2. Por se tratar de um gráfico de pontos, o valor definido para o eixo X e eixo Y não alteram sua interpretação.
americas %>% 
  ggplot(mapping = aes(x = lifeExp,
                       y = gdpPercap)) +
  geom_point() +
  geom_smooth(method = 'lm') 

# Estética

americas %>% 
  ggplot(mapping = aes(x = lifeExp,
                       y = gdpPercap)) +
  geom_point() +
  geom_smooth(method = 'lm') +
  theme_bw() +
  scale_fill_brewer(palette = 'Dark2') +
  labs(title = 'Expectativa de vida e PIB per capita dos países das Américas
no período de 1952 a 2007', 
       y = 'PIB per capita',
       x = 'Expectativa de vida',
       caption = "MQuinho de inverno - Meios Jr.") +
  theme(plot.title = element_text(face = "bold",
                                  margin = margin(10, 0, 10, 0),
                                  size = 12),
        axis.title.x = element_text(margin = margin(t = 5),
                                    size = 12,
                                    face = 'italic'),
        axis.title.y = element_text(margin = margin(r = 10),
                                    size = 12,
                                    face = 'italic'),
        plot.caption = element_text(size = 11))

5.5. Linha

Selecione quatro países do seu continente e faça um gráfico de linhas demostrando a progressão das expectativas de vida de cada país ao longo do período de 1952 a 2007. Além disso, defina que as cores das linhas serão correspondentes aos países.

Dicas:

  1. Os anos deverão estar no eixo X.
  2. O argumento para definir as cores das linhas é o colour(), e deverá estar no argumento de definição dos eixos.
americas %>%
  mutate(year = as.factor(year)) %>% 
  filter(country %in% c('Brazil','Canada', 'United States', 'Venezuela')) %>% 
  ggplot(mapping = aes(x = year,
                       y = lifeExp,
                       colour = country,
                       group = country)) +
  geom_line()

#Estética

americas %>%
  mutate(year = as.factor(year)) %>% 
  filter(country %in% c('Brazil','Canada', 'United States', 'Venezuela')) %>% 
  ggplot(mapping = aes(x = year,
                       y = lifeExp,
                       colour = country,
                       group = country)) +
  geom_line() +
  geom_point() +
  theme_bw() +
  scale_colour_brewer(palette = 'Dark2') +
  labs(title = 'Expectativa de vida para quatro países das Américas
no período de 1952 a 2007', 
       y = 'Expectativa de vida',
       x = 'Anos',
       caption = "MQuinho de inverno - Meios Jr.",
       colour = 'País') +
  theme(plot.title = element_text(face = "bold",
                                  margin = margin(10, 0, 10, 0),
                                  size = 12),
        axis.title.x = element_text(margin = margin(t = 5),
                                    size = 12,
                                    face = 'italic'),
        axis.title.y = element_text(margin = margin(r = 10),
                                    size = 12,
                                    face = 'italic'),
        plot.caption = element_text(size = 11))