Nesse exercício vamos trabalhar com dados de PIB per capita de países. Vamos pegar dados do site do Banco Mundial, usando o pacote WDI no R. Este pacote deve ser instalado com o comando install.packages(“WDI”) e depois carregado com o comando library(WDI).
Bibliotecas (ou packages) que serão usadas
Instalamos o pacote no RStudio com o comando:
install.packages(“nome_do_pacote”)
Instalamos os pacotes apenas uma vez. Mas sempre que abrimos o R precisamos carregá-los em nosso espaço de trabalho (o script):
library(nome_do_pacote)
Vamos usar o seguintes pacotes em nosso estudo:
WDI - serve para “raspar” dados do Banco Mundial, um dos melhores e mais completos do mundo. Esse pacote foi desenvolvido por Vincent Arel-Bundock professor de Economia Política Internacional da Universidade de Montreal. É, portanto, um pacote para web scraping.
ggplot2 - é usado para fazer gráficos, dos mais simples aos mais sofisticados. Foi desenvolvido por Hadley Wickham estatístico e cientista de dados neozelandês, reconhecido por seu papel fundamental no ecossistema da linguagem R. Ele é Cientista-Chefe na Posit (anteriormente RStudio) e membro da Fundação R, sendo amplamente conhecido por criar o tidyverse, um conjunto de pacotes que transformou a prática da ciência de dados.
tidyverse - poderosa suíte para se trabalhar com ciência de dados. A equipe na Posit que mantêm e desenvolve o tidyverse é liderada por Hadley Wickman.
No chunk abaixo, carregamos os pacotes.
library (WDI)library(ggplot2)library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.6
✔ forcats 1.0.0 ✔ stringr 1.6.0
✔ lubridate 1.9.4 ✔ tibble 3.3.0
✔ purrr 1.0.4 ✔ tidyr 1.3.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Fazendo web scraping dos dados que nos interessam:
country iso2c iso3c year NY.GDP.PCAP.KD
1 Africa Eastern and Southern ZH AFE 2024 1435.356
2 Africa Eastern and Southern ZH AFE 2023 1431.722
3 Africa Eastern and Southern ZH AFE 2022 1440.430
4 Africa Eastern and Southern ZH AFE 2021 1425.209
5 Africa Eastern and Southern ZH AFE 2020 1399.398
6 Africa Eastern and Southern ZH AFE 2019 1479.372
Notem que a coluna com os valores do PIB per capita está nomeada com código. Vamos resolver isso da seguinte forma:
names(pib_pc)[5] <-"pib_pc"head(pib_pc)
country iso2c iso3c year pib_pc
1 Africa Eastern and Southern ZH AFE 2024 1435.356
2 Africa Eastern and Southern ZH AFE 2023 1431.722
3 Africa Eastern and Southern ZH AFE 2022 1440.430
4 Africa Eastern and Southern ZH AFE 2021 1425.209
5 Africa Eastern and Southern ZH AFE 2020 1399.398
6 Africa Eastern and Southern ZH AFE 2019 1479.372
Como podemos ver acima, trocamos o nome da quinta coluna de nossa tabela (data frame).
Vamos trabalhar com alguns países apenas. Sejam eles Brasil, Argentina, Chile, Peru.
Explicando o código:Separando os países: iniciamos separando do banco de dados pib_pc os países (country) que nos interessam usando a função de filtragem por linhas (filter). Note a aplicação do operador pipe (%>%). Ele “canaliza” os dados inicias para uma organização que nos interessa. Já o operador %in% significa elementos contidos em c(…). O c() é uma função de concatenação ou ajuntamento de dados. A função filter está no pacote tidyverse.
Fazendo o gráfico: vou destacar apenas os itens mais importantes. Argumentos da função ggplot() são: aes, ou seja a forma ou estética do gráfico. No caso estamos dizendo que queremos os valores dos anos (year) no eixo horizontal e os valores do pib_pc no eixo vertical. O comando color=country diz ao R para fazer uma linha de cada cor. O ggplot trabalha em camadas, então vamos agora acrescentar uma função para desenhar linhas (note o sinal “+” separando essas camadas ou instruções). A função é a geom_line(), cujo argumento é a espessura da linha (linewidth = 1). Acrescentamos agora uma camada para tratar dos rótulos (labels) de nosso gráfico. Seus argumentos são bem evidentes. As duas últimas camadas são para tornar o gráfico mais elegante. Pesquisem sobre as funções empregadas.