Capítulo 9 Estruturando e Limpando Dados
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.1 O Formato do dataframe
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.1.1 Conversão entre long e wide
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.2 Convertendo Listas em dataframes
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.3 Eliminando Outliers
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.4 Desinflacionando Dados de Preços
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.5 Modificando a Frequência Temporal dos Dados
Você chegou ao fim da versão online do livro Análise de Dados Financeiros e Econômicos com o R, terceira edição. O conteúdo integral da obra pode ser adquirido na loja da Amazon como ebook ou livro impresso. A compra do livro é uma ótima maneira de suportar este e outros projetos do autor.
9.6 Exercícios
Q.1
Considere o dataframe
criado com o código a seguir:
library(tidyverse)
my_N <- 100
df <- bind_rows(tibble(ticker = rep('STOCK 1', my_N),
ref_date = Sys.Date() + 1:my_N,
price = 100 + cumsum(rnorm(my_N))),
tibble(ticker = rep('STOCK 2', my_N),
ref_date = Sys.Date() + 1:my_N,
price = 100 + cumsum(rnorm(my_N))) )
print(df)
O formato do dataframe
é longo ou largo? Explique sua resposta.
O formato é longo: temos dados empilhados para duas ações diferentes. Note que, com a adição de novas tickers, a tabela cresce com novas linhas. Novas variáveis podem ser facilmente adicionadas com novas colunas.
Q.2
Modifique o formato do dataframe
anterior, de longo para largo ou vice-versa.
library(tidyverse)
my_N <- 100
df <- bind_rows(tibble(ticker = rep('STOCK 1', my_N),
ref_date = Sys.Date() + 1:my_N,
price = 100 + cumsum(rnorm(my_N))),
tibble(ticker = rep('STOCK 2', my_N),
ref_date = Sys.Date() + 1:my_N,
price = 100 + cumsum(rnorm(my_N))) )
print(df)
Q.3
Considere a seguinte lista:
library(tidyverse)
my_l <- list(df1 = tibble(x = 1:100, y = runif(100)),
df2 = tibble(x = 1:100, y = runif(100), v = runif(100)),
df3 = tibble(x = 1:100, y = runif(100), z = runif(100)) )
Agrege todos dataframes
em my_l
para um objeto único usando funções do.call
ou dplyr::bind_rows
. O que aconteceu com os dados de df1
onde colunas v
e z
não existem?
Quando bind_rows
não encontra a mesma coluna na junção de tabelas diferentes, os dados faltantes são definidos como NAs
. Veja a seguir:
library(tidyverse)
my_l <- list(df1 = tibble(x = 1:100, y = runif(100)),
df2 = tibble(x = 1:100, y = runif(100), v = runif(100)),
df3 = tibble(x = 1:100, y = runif(100), z = runif(100)) )
# solution with bind_rows
bind_df1 <- bind_rows(my_l)
# solution with do.cal
bind_df2 <- do.call(bind_rows, my_l)
# check solutions match
identical(bind_df1, bind_df2)
print(bind_df1)
# the missing data points were set as NA values
Q.4
Utilize pacote BatchGetSymbols
para baixar os dados do índice SP500 ('^GSPC'
) desde 1950-01-01 até 2021-01-01. Quais é a soma dos 5 maiores retornos positivos do índice?
Resposta:
Q.5
Use função replace_outliers
(veja seção 9.3), criada neste capítulo, para remover outliers de todas as colunas numéricas dos dados do SP500 importados anteriormente com my_prob = 0.025
. Quantas linhas foram perdidas neste processo de limpeza?
Resposta:
Q.6
Use a função BatchGetSymbols::BatchGetSymbols
para baixar os preços do índice FTSE ('^FTSE'
) de 2010-01-01 até 2021-01-01. Em seguida, reconstrua os dados na frequência anual, definindo cada valor do ano como sendo a última observação do período. Dica: veja a função dplyr::summary_all
para uma forma funcional de agregar todas as colunas de um dataframe
.
Q.7
Use os mesmos dados diários do FTSE e reconstrua os dados na frequência mensal, novamente utilizando a última observação do período.
Q.8
Para os mesmos dados diários do FTSE, verifique as datas e preços das 20 maiores quedas de preços. Se, para cada um desses casos, um investidor comprasse o índice no preço das maiores quedas e o mantivesse por 30 dias, qual seria seu retorno nominal médio por transação?
Resposta: