Prova 1° GQ - Laboratório de Dados Econômicos¶

Professor: Dinilson Pedroza Jr.¶
Data: 01/10/2025¶

Aluno: Joel Victor Sobrinho Da Silva

2 - O que é tidyverse? Explique as principais? Explique as seguintes funções do tidyverse: pipe, select, filter, mutate. Qual a diferença ente um data.frame e um tibble¶

O tidyverse é um pacote (ecosistema), que agrega vários pacotes, como dplyr, lubridate, forcats, ggplot etc. É como um canivete suiço para trabalhar com análise ou ciência de dados.

Explicação para as funções:

  • pipe: %>% é um operador/função que funciona como um "e, então" concatenando várias operações para manipular um dataframe.

Exemplo: df = df_raw %>% select(coluna1, coluna2) %>% mutate(nova_coluna = coluna1 + coluna2)

  • select: permite selecionar colunas de um data.frame ou tibble

  • filter: permite filtrar um data.frame/tibble com base com base em valores que aparecem em uma coluna Exemplo: df %>% filter(coluna1 > 10)

  • mutate: permite criar ou editar colunas em um data.frame/tibble Exemplo: df

A principal diferença entre um data.frame e tibble é que que a classe de objetos data.frame faz parte do 'R base', já a classe de objetos faz parte do 'universo' do tidyverse, e um objeto da classe tibble.

3 - Em que sentido o tidyverse pode ser considerado um conjunto de pacotes de código aberto (Open Source) e também um software livre (Free Software)?¶

Exise uma grande diferença entre softwares de código aberto (Open Source) e software livre (Free software).

  • Softwares livres são aqueles que permitem o uso livre mas não possuem o código aberto para modificações
  • Softwares de código aberto são aqueles que possuem o seu código de fonte livre para todos estudarem, editarem e lançarem as suas próprias versões, a depender do tipo de licença pode ser mais permissivo ou mais restrito no que se pode fazer com o código disponibilizado.

4 - Tabela 7060 - IPCA¶

Para essa questão foi solicitado coletar os dados da tabela 7060 do Sidra-IBGE, com os dados do 'IPCA'

In [4]:
# Carrega os pacotes
library(sidrar) # pacote para consumir dados da api do ibge-sidra
library(tidyverse) # pacote do ecosistema tidyverse, que carrega vários pacotes como dplyr, forcats etc
In [77]:
# Carrega a tabela com a variação mensal do ipca para o Brasil, Rio de Janeiro e Salvador
ipca_long = get_sidra(api = "/t/7060/n1/all/n7/2901,3301/v/63/p/last%2024/c315/7169/d/v63%202")

# Visualiza os dados
head(ipca_long)
All others arguments are desconsidered when 'api' is informed

A data.frame: 6 × 13
Nível Territorial (Código)Nível TerritorialUnidade de Medida (Código)Unidade de MedidaValorBrasil e Região Metropolitana até 2020 (Código)Brasil e Região Metropolitana até 2020Variável (Código)VariávelMês (Código)MêsGeral, grupo, subgrupo, item e subitem (Código)Geral, grupo, subgrupo, item e subitem
<chr><chr><chr><chr><dbl><chr><chr><chr><chr><chr><chr><chr><chr>
21Brasil2%0.261Brasil63IPCA - Variação mensal202309setembro 2023 7169Índice geral
31Brasil2%0.241Brasil63IPCA - Variação mensal202310outubro 2023 7169Índice geral
41Brasil2%0.281Brasil63IPCA - Variação mensal202311novembro 2023 7169Índice geral
51Brasil2%0.561Brasil63IPCA - Variação mensal202312dezembro 2023 7169Índice geral
61Brasil2%0.421Brasil63IPCA - Variação mensal202401janeiro 2024 7169Índice geral
71Brasil2%0.831Brasil63IPCA - Variação mensal202402fevereiro 20247169Índice geral

Os dados coletados via pacote sidrar normalmente são entregues em formato "longo", vamos aplicar uma série de transformações para deixar os dados no formato desejado.

  • Vamos usar a função mutate para criar uma nova coluna de datas
  • A função parse_date do pacote 'lubridate' foi utilizada, com o argumento format = "%Y%m"
  • A função select foi selecionado para selecionar apenas as colunas de interesse
  • e por fim a função pivot_wider foi utilizada para 'pivotear' os dados e sair do formato "longo" para o formato "largo"
In [78]:
# Cria o dataframe no formato wide
ipca_wide = ipca_long %>%
    # Usa a função mutate para criar uma nova coluna de datas
    mutate(Data = parse_date(x = ipca_long$`Mês (Código)`,format = "%Y%m")) %>%
    # Usa a função select para selecionar as colunas de interesse
    select('Brasil e Região Metropolitana até 2020', 'Valor', 'Data') %>%
    # Usa a função pivot_wider para sair de um formato 'longo' para um formato 'wide'
    pivot_wider(names_from = 'Brasil e Região Metropolitana até 2020', values_from = 'Valor')

# Olha o novo dataframe
head(ipca_wide)
A tibble: 6 × 4
DataBrasilSalvador (BA)Rio de Janeiro (RJ)
<date><dbl><dbl><dbl>
2023-09-010.26 0.050.18
2023-10-010.24 0.290.38
2023-11-010.28-0.170.57
2023-12-010.56 0.840.65
2024-01-010.42 0.130.44
2024-02-010.83 0.960.88

5 - Tabela 6784 - PIB e PIB per capita¶

Para essa questão foi solicitado coletar os dados da tabela 6784 do Sidra-IBGE, com os dados do 'PIB' e 'PIB per capita'

In [79]:
# Carrega os dados sobre PIB e PIB per capita usando a funçao get_sidra do pacote sidrar
pib_long = get_sidra(api = "/t/6784/n1/all/v/9808,9812/p/all/d/v9812%202")

# Olha o dataframe
head(pib_long)
All others arguments are desconsidered when 'api' is informed

A data.frame: 6 × 11
Nível Territorial (Código)Nível TerritorialUnidade de Medida (Código)Unidade de MedidaValorBrasil (Código)BrasilVariável (Código)VariávelAno (Código)Ano
<chr><chr><chr><chr><dbl><chr><chr><chr><chr><chr><chr>
21Brasil1550Milhões de Reais 8547641Brasil9808PIB - valores correntes19961996
31Brasil1550Milhões de Reais 9520891Brasil9808PIB - valores correntes19971997
41Brasil1550Milhões de Reais10023511Brasil9808PIB - valores correntes19981998
51Brasil1550Milhões de Reais10877101Brasil9808PIB - valores correntes19991999
61Brasil1550Milhões de Reais11990921Brasil9808PIB - valores correntes20002000
71Brasil1550Milhões de Reais13157551Brasil9808PIB - valores correntes20012001

Aqui foi criado um novo dataframe fitrando apenas os dados do 'PIB per capita - valores correntes'

In [38]:
# Filtra apenas para 'PIB per capita - valores correntes'
pib_long_per_capita = pib_long %>%
    filter(pib_long$`Variável` == 'PIB per capita - valores correntes')

# Observa o dataframe
head(pib_long_per_capita)
A data.frame: 6 × 11
Nível Territorial (Código)Nível TerritorialUnidade de Medida (Código)Unidade de MedidaValorBrasil (Código)BrasilVariável (Código)VariávelAno (Código)Ano
<chr><chr><chr><chr><dbl><chr><chr><chr><chr><chr><chr>
11Brasil38Reais5219.361Brasil9812PIB per capita - valores correntes19961996
21Brasil38Reais5729.021Brasil9812PIB per capita - valores correntes19971997
31Brasil38Reais5944.921Brasil9812PIB per capita - valores correntes19981998
41Brasil38Reais6359.801Brasil9812PIB per capita - valores correntes19991999
51Brasil38Reais6863.881Brasil9812PIB per capita - valores correntes20002000
61Brasil38Reais7433.481Brasil9812PIB per capita - valores correntes20012001

Aqui o pacote 'ggplot2' foi utilizado para criar um gráfico de linhas da variável 'PIB per capita - valores correntes'

In [98]:
# Ajusta a saída da célula para aumentar o tamanho do gráfico
options(repr.plot.width = 22, repr.plot.height = 8)
# Plota um dataset no formato longo usando o ggplot
ggplot(data = pib_long_per_capita, aes(x = as.numeric(Ano), y = Valor, colour = Variável)) +
    geom_line(color = 'red', linewidth = .9) +
    theme_minimal() +
    labs(title = aes("PIB per capita do Brasil"),
         subtitle = "Valores em R$ Milhões",
         x = "Ano",
         y = "Valor"
         )
No description has been provided for this image
In [ ]: