Operações Básicas com o R

Análise de Dados Financeiros e Econômicos com o R

Marcelo S. Perlin

EA-UFRGS

20/08/2026

Funcionamento do R e RStudio

Como o R e RStudio funciona?

  • Um script automatiza a análise de dados, produzindo algo no final, geralmente uma tabela ou uma figura
  • Códigos serão inseridos e salvos em um script com extensão .R (ex. 01_run-research.R)
  • Como um compilado de instruções em sequência, o script irá rodar sempre da mesma forma
  • O código pode ser reaproveitado em projetos futuros

Explicando a Tela do RStudio

A tela do RStudio

Passos iniciais

  • uma sessão do R é inicializada com o RStudio
  • na execução, código é lido de cima para baixo;
  • símbolo <- ou = define objetos na sessão do R
  • cada objeto possui métodos diferentes
  • função são métodos aplicados a objetos, tendo entradas e uma saída

Seu primeiro Script

Digite e execute os seguintes comandos em um novo script do R:

# Isso é um comentário (não roda nada)
x <- 1
y <- "meu lindo texto em português"

# mostre o valor do x
print(x)

# apresente um gráfico
plot(1:10)

Atalhos para rodar código

control + shift + s
executa o arquivo atual sem eco no console;
control + shift + enter
executa o arquivo atual com eco;
control + enter
executa a linha selecionada;
alt + -
insere <- (com espaços);
control + shift + m
insere o operador pipe |>;
control + shift + c
comenta ou descomenta as linhas selecionadas;
control + .
busca rápida de funções e arquivos no projeto;

Seu segundo script

Digite os seguintes comandos em um novo script do R:

# carregue pacotes
library(datasets)

# busque tabela
df <- datasets::chickwts

# verifique dados
print(df)

# adicione nova coluna
df$nova_coluna <- paste0("Linha ", 1:nrow(df))

# salve em arquivo temporário (ou na pasta do projeto)
write.csv(df, fs::file_temp(ext = ".csv"))

Objetos no R

Como obter ajuda

  • ?função ou help(função) abre a documentação oficial de uma função (ex.: ?readr::read_csv)
  • ??termo busca um termo em todos os pacotes instalados
  • args(função) mostra os argumentos esperados e str(objeto) mostra a estrutura de um objeto
  • View(objeto) abre um objeto em uma aba interativa do RStudio
  • Ao receber um erro, leia a mensagem completa, procure o trecho da mensagem no Google/IA e teste as funções isoladamente

Tipos de objetos

No R, tudo é um objeto, e cada tipo de objeto tem suas propriedades.

# numeric
x <- 1 # unique value
x <- 1:10 # sequence
x <- c(1, 4.1, 6.5, 7) # vector
x <- c(1, 1:10, 99) # combined vector
x <- runif(100) # 100 random numbers
x <- seq(1, 10, by = 2)

# Date
my_date <- as.Date("2022-01-05")
today <- Sys.Date()

# character
y <- 'text' # simples text
y <- c('my text 1', 'my.text2') # vector of texts

# logical
l <- TRUE
l <- FALSE
l <- c(TRUE, FALSE)

# dataframe (tabela)
df <- data.frame(x = 1:10,
                 z = paste0('linha ', 1:10))

O Formato Internacional

  • decimal: O decimal no R é definido pelo ponto (.), tal como em 2.5 e não vírgula, como em 2,5.

  • evite caracteres latinos ao máximo. Nos textos (objeto de caracteres), é possível utilizá-los desde que a codificação do objeto esteja correta (UTF-8 ou Latin1).

formato das datas: as datas no R são formatadas de acordo com o padrão ISO 8601, seguindo o padrão YYYY-MM-DD

Pacotes do R

Introdução a pacotes

Pacotes são módulos gratuitos, desenvolvidos por outros usuários, e podem ser instalados e usados livremente em seu computador.

  • O R possui hoje em torno de 24708 pacotes à disposição dos usuários

  • O repositório oficial de pacotes é o CRAN (The Comprehensive R Archive Network), mas alguns pacotes estão disponíveis no Github

  • Cada pacote é nada mais que um conjunto de arquivos, copiado para sua pasta local e compilado localmente conforme necessidade. No meu caso (comando .libPaths()), a pasta é: /home/msperlin/R/x86_64-pc-linux-gnu-library/4.6

  • O task views é uma ótima fonte para estudar potenciais pacotes em uma determinada área de conhecimento

  • DICA: é extremamente provável que o método que pretende usar em seu artigo/dissertação/tese esteja disponível em um pacote

Instalando Pacotes

  • Pacotes do CRAN são instalados com comando install.packages()
# install pkg readr
install.packages('readr')
  • Pacotes do Github são instalados com remotes::install_github() ou pak::pkg_install():
# install ggplot2 from github using remotes or pak
remotes::install_github("hadley/ggplot2")
# ou com pak:
# pak::pkg_install("hadley/ggplot2")

Pacote pak

Pacote pak é uma versão moderna de utils::install.packages() para a instalação de pacotes do R, que otimiza a instalação de pacotes e suas dependências.

  • Baixa e compila múltiplos pacotes simultaneamente

  • Resolução inteligente de dependências

  • Sintaxe unificada para múltiplas fontes: Instala de diversas origens usando o mesmo comando (pak::pkg_install()): CRAN/Github/Bioconductor

  • Executa o processo de build em uma sessão de R separada, evitando conflitos com pacotes já carregados na sua sessão atual.

  • Dependências de sistema automáticas: No Linux, identifica e instala (ou instrui como instalar) as bibliotecas C/C++ necessárias no sistema operacional.

  • Feedback visual claro: Interface mais limpa, indicando o progresso, tempo restante e o plano de resolução antes de aplicar as mudanças.

Ambientes isolados no R

No R, é possível criar ambientes isolados, com pacotes e versões específicas, para cada projeto. Isso evita conflitos de versões de pacotes entre projetos diferentes.

  • Pacote renv permite criar ambientes isolados para cada projeto, com pacotes e versões específicas.

  • Vantagens: conflitos de pacotes entre projetos diferentes são evitados, e é possível compartilhar o ambiente com outros usuários.

  • Desvantagens: necessita da reinstalação dos pacotes a cada projeto.

Exercício 1

  1. Crie um novo script e rode:
yvec <- c('text1', 'text2', 'text3', 'text4', 'text5', 'text6')
zvec <- paste0('text', 1:6)

print(yvec)
print(zvec)

yvec e zvec são iguais? Por que?

  1. Pacote fortunes permite que o usuário conte piadas com o R. Instale o mesmo e execute a sua principal função fortune(). Qual é a piada contada?

  2. Pacote afedR3 foi construído baseado na versão em inglês do livro da disciplina. Instale o mesmo com o comando remotes::install_github("msperlin/afedR3") (ou pak::pkg_install("msperlin/afedR3")). Após isso, execute o código abaixo e descreva qual a finalidade do mesmo.

# importe dados
f_df <- afedR3::data_path("CH04_ibovespa.csv")
df <- readr::read_csv(f_df)

# apresente a tabela
print(df)
  1. Crie o vetor v <- c(10, 20, "30"). Verifique a sua classe com class(v). O que acontece ao tentar executar v + 5? Como converter o vetor para numérico e realizar a operação?

  2. Crie um projeto com ambiente de R isolado e refaça o exercício 3. O que mudou?

Interagindo com o Sistema Operacional

Operações mais comuns e importantes

  • Mudança de diretório de trabalho
    • comandos setwd()/getwd()
    • DICA: uso de PROJETOS do RStudio automatiza essa tarefa no dia-a-dia
  • Limpeza de memória:
    • comando rm() limpa a memória
    • reinicialização da sessão com control + shift + f10.
    • Caso necessário, force a limpeza da memória RAM (garbage collection) com gc()
  • Listar arquivos e diretórios
    • comando fs::dir_ls(PATH)
    • o R possui uma pasta temporária, a qual pode ser usada nas mais diferentes operações. Para descobrir a sua, use a função fs::path_temp(). A minha é “/tmp/Rtmp9GmbQB”
  • Apagar e remover diretórios
    • diversos comandos com pacote fs.

Interagindo com a Internet

Baixando Arquivos da Internet

  • função download.file baixa arquivos da internet:
# set link
link <- 'go.microsoft.com/fwlink/?LinkID=521962'
local_file <- fs::file_temp(ext = ".xlsx")

download.file(url = link,
              destfile = local_file)

df <- readxl::read_excel(local_file)

print(df)

Interagindo com APIs

  • acesse APIs da internet com jsonlite::fromJSON()
  • exemplo: acesso o api do Banco Central do Brasil para importar taxas atuais de financiamento de veículos
  • o operador pipe |> encadeia operações: a saída da esquerda é passada como primeiro argumento da função à direita
url <- "https://www.bcb.gov.br/api/servico/sitebcb/historicotaxajurosdiario/TodosCampos?filtro=codigoSegmento%20eq%20%271%27%20and%20codigoModalidade%20eq%20%27401101%27%20and%20InicioPeriodo%20eq%20%272023-05-09%27"

df_taxas_auto <- jsonlite::fromJSON(url)[[1]]

df_taxas_auto |>
  gt::gt()
Posicao cnpj8 Segmento Modalidade InstituicaoFinanceira TaxaJurosAoMes TaxaJurosAoAno
1 04452473 Pessoa Física Aquisição de veículos - Prefixado BMW SA CFI 1,18 15,11
2 02992446 Pessoa Física Aquisição de veículos - Prefixado BANCO CNH INDUSTRIAL CAPITAL S.A 1,26 16,27
3 28517628 Pessoa Física Aquisição de veículos - Prefixado BCO PACCAR S.A. 1,29 16,59
4 09313766 Pessoa Física Aquisição de veículos - Prefixado CARUANA SCFI 1,29 16,68
5 58017179 Pessoa Física Aquisição de veículos - Prefixado BCO VOLVO BRASIL S.A. 1,34 17,30
6 11417016 Pessoa Física Aquisição de veículos - Prefixado SCANIA BCO S.A. 1,36 17,55
7 59109165 Pessoa Física Aquisição de veículos - Prefixado BCO VOLKSWAGEN S.A 1,36 17,64
8 59274605 Pessoa Física Aquisição de veículos - Prefixado BCO GM S.A. 1,54 20,14
9 60814191 Pessoa Física Aquisição de veículos - Prefixado BCO MERCEDES-BENZ S.A. 1,57 20,61
10 33603457 Pessoa Física Aquisição de veículos - Prefixado BCO RODOBENS S.A. 1,60 20,99
11 62307848 Pessoa Física Aquisição de veículos - Prefixado BCO RCI BRASIL S.A. 1,61 21,11
12 04866275 Pessoa Física Aquisição de veículos - Prefixado BANCO INBURSA 1,62 21,33
13 03502961 Pessoa Física Aquisição de veículos - Prefixado STELLANTIS FINANCIAMENTOS CFI 1,68 22,17
14 30172491 Pessoa Física Aquisição de veículos - Prefixado BANCO HYUNDAI CAPITAL BRASIL 1,70 22,37
15 60746948 Pessoa Física Aquisição de veículos - Prefixado BCO BRADESCO S.A. 1,71 22,61
16 33136888 Pessoa Física Aquisição de veículos - Prefixado BRB - CFI S/A 1,76 23,24
17 03215790 Pessoa Física Aquisição de veículos - Prefixado BCO TOYOTA DO BRASIL S.A. 1,80 23,80
18 22639377 Pessoa Física Aquisição de veículos - Prefixado SINOSSERRA S/A - SCFI 1,80 23,90
19 28127603 Pessoa Física Aquisição de veículos - Prefixado BCO BANESTES S.A. 1,83 24,29
20 17167412 Pessoa Física Aquisição de veículos - Prefixado FINANCEIRA ALFA S.A. - SCFI 1,85 24,60
21 45437547 Pessoa Física Aquisição de veículos - Prefixado SAFRA SCFI S.A. 1,95 26,11
22 00000000 Pessoa Física Aquisição de veículos - Prefixado BCO DO BRASIL S.A. 1,97 26,33
23 60872504 Pessoa Física Aquisição de veículos - Prefixado ITAÚ UNIBANCO HOLDING S.A. 1,99 26,60
24 01852137 Pessoa Física Aquisição de veículos - Prefixado BCO BRASILEIRO DE CRÉDITO S.A. 1,99 26,62
25 31872495 Pessoa Física Aquisição de veículos - Prefixado BCO C6 S.A. 2,00 26,86
26 07707650 Pessoa Física Aquisição de veículos - Prefixado SANTANDER SCFI S.A. 2,06 27,64
27 00360305 Pessoa Física Aquisição de veículos - Prefixado CAIXA ECONOMICA FEDERAL 2,08 28,00
28 07207996 Pessoa Física Aquisição de veículos - Prefixado BCO BRADESCO FINANC. S.A. 2,11 28,41
29 04862600 Pessoa Física Aquisição de veículos - Prefixado PORTOSEG S.A. CFI 2,11 28,48
30 59588111 Pessoa Física Aquisição de veículos - Prefixado BCO VOTORANTIM S.A. 2,18 29,59
31 90400888 Pessoa Física Aquisição de veículos - Prefixado BCO SANTANDER (BRASIL) S.A. 2,31 31,47
32 03634220 Pessoa Física Aquisição de veículos - Prefixado BCO HONDA S.A. 2,45 33,76
33 60701190 Pessoa Física Aquisição de veículos - Prefixado ITAÚ UNIBANCO S.A. 2,46 33,83
34 10371492 Pessoa Física Aquisição de veículos - Prefixado BCO YAMAHA MOTOR S.A. 2,59 35,98
35 92874270 Pessoa Física Aquisição de veículos - Prefixado BCO DIGIMAIS S.A. 2,66 36,95
36 34991938 Pessoa Física Aquisição de veículos - Prefixado SIMPALA S.A. CFI 2,73 38,10
37 05676026 Pessoa Física Aquisição de veículos - Prefixado CREDIARE CFI S.A. 2,91 41,02
38 00411939 Pessoa Física Aquisição de veículos - Prefixado FINAMAX S.A. CFI 3,03 43,08
39 62232889 Pessoa Física Aquisição de veículos - Prefixado BCO DAYCOVAL S.A 3,12 44,52
40 59285411 Pessoa Física Aquisição de veículos - Prefixado BANCO PAN 3,18 45,62
41 92228410 Pessoa Física Aquisição de veículos - Prefixado OMNI SA CFI 3,43 49,85
42 05192316 Pessoa Física Aquisição de veículos - Prefixado VIA CERTA FINANCIADORA S.A. - CFI 3,77 55,94
43 05503849 Pessoa Física Aquisição de veículos - Prefixado CLOUDWALK FINANCEIRA S.A. CFI 3,95 59,11

Ferramentas de produtividade do RStudio

Code completion

  • ative a ferramenta code completion com a tecla tab
  • Serve para facilitar o encontro de:
    • nomes de objetos;
    • nome de pacotes;
    • nome de arquivos;
    • nomes de entradas em funções.

Uso do autocomplete para objetos

Uso do autocomplete para pacotes

Uso do autocomplete para arquivos

Exercícios 2 (1/2)

  1. Utilize o R para baixar o arquivo compactado com o material do livro, disponível neste link. Salve o mesmo como um arquivo na pasta temporária da sessão (veja função fs::file_temp(ext = ".zip")).

  2. Utilize a função unzip para descompactar o arquivo baixado na questão anterior em uma pasta temporária (fs::path_temp()) e, após a operação, utilize a função fs::file_delete() para remover o arquivo zipado do computador. Quantos arquivos estão disponíveis no arquivo descompactado?

  3. Toda vez que o usuário instala um pacote do R, os arquivos desse são armazenados localmente em uma pasta específica do computador. Utilizando os comandos .libPaths()[1] e fs::dir_ls(), liste todos os diretórios desta pasta. Quantos pacotes estão instalados nesta biblioteca?

  4. No mesmo assunto do exercício anterior, liste todos os arquivos em todas as subpastas do diretório contendo os arquivos dos pacotes. Em média, quantos arquivos são necessários para cada pacote?

Exercícios 2 (2/2)

  1. Instale o pacote GetTDData no seu computador. Leia o manual do pacote (use ?GetTDData::get_yield_curve) e utilize a função GetTDData::get_yield_curve() para baixar a curva de juros atual no sistema financeiro Brasileiro.

  2. Utilizando o pacote pak (ou remotes), instale a versão de desenvolvimento do pacote ggplot2 do repositório oficial do Github (tidyverse/ggplot2). Carregue o pacote usando library(ggplot2) e crie um gráfico de dispersão com dados aleatórios (x = 1:10, y = rnorm(10)).

  3. DESAFIO - Utilizando sua capacidade de programação, verifique na sua pasta de usuário (fs::path_home()) qual subdiretório de primeiro nível possui o maior número total de arquivos (recursivamente). Apresente na tela as cinco pastas com maior número de arquivos.