# Adição
3 + 5
## [1] 8
# Subtração
5 - 3
## [1] 2
# Multiplicação
3 * 4
## [1] 12
# Divisão
4 / 2
## [1] 2
# Exponenciação
2^4
## [1] 16
# Módulo
7%%3
## [1] 1
economia <- 200
# imprime o valor de economia no console
economia
## [1] 200
meu_dinheiro <- 100
seu_dinheiro <- 200
# Adiciona os 'dinheiros' e salva na variável 'nosso_dinheiro'
(nosso_dinheiro <- meu_dinheiro + seu_dinheiro)
## [1] 300
# caixa inicial e 5% de retorno em janeiro
caixa_inicial <- 200
ret_jan <- 0.05 # utilize pontos, não vírgulas, para números decimais
indice_jan <- 1 + ret_jan
# qual é o caixa ao final do mês?
(pos_caixa_jan <- caixa_inicial * indice_jan)
## [1] 210
# retorno de fevereiro = 4.5%
ret_fev <- 4.5/100
indice_fev <- 1 + ret_fev
# caixa total ao final dos dois meses
caixa_total <- caixa_inicial * indice_jan * indice_fev
caixa_total
## [1] 219.45
# O valor da ação da Apple é 'numeric'
apple_stock <- 208.38
# Credit ratings é um 'string'
credit_rating <- "AAA"
# Você gosta do mercado de capitais? TRUE ou FALSE?
resposta <- TRUE
resposta
## [1] TRUE
Combinando elementos.
# Um vetor numérico
AMBEV_stock <- c(14.16, 14.19, 13.824)
# Um vetor de caracteres
financas <- c("ações", "Fundos", "Carteiras")
# Um vetor lógico
logico <- c(TRUE, FALSE, TRUE)
# vetor com 12 meses de retorno e nomes dos meses
ret <- c(5, 2, 3, 7, 8, 3, 5, 9, 1, 4, 6, 3)
meses <- c("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez")
# Adiciona os nomes ao vetor ret
names(ret) <- meses
# veja como ficou
ret
## Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
## 5 2 3 7 8 3 5 9 1 4 6 3
# Gráfico dos pontos
plot(ret, col = 'blue')
# Pesos e retornos
ret_microsoft <- 7/100
ret_sony <- 9/100
peso_microsoft <- .2
peso_sony <- .8
# Retorno da carteira
(ret_carteira <- ret_microsoft * peso_microsoft + ret_sony * peso_sony)
## [1] 0.086
# Pesos, retornos e nomes das companhias
ret_comp <- c(ret_microsoft, ret_sony)
pesos <- c(peso_microsoft, peso_sony)
companhias <- c("Microsoft", "Sony")
# Dê nomes aos dados nos vetores
names(ret_comp) <- companhias
names(pesos) <- companhias
# Multiplique os vetores
retxpesos <- ret_comp*pesos
retxpesos
## Microsoft Sony
## 0.014 0.072
# Some para obter o retorno da carteira
(ret_carteira <- sum(retxpesos))
## [1] 0.086
ret
## Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
## 5 2 3 7 8 3 5 9 1 4 6 3
ret[1:6]
## Jan Fev Mar Abr Mai Jun
## 5 2 3 7 8 3
# Somente março e maio
meses1 <- c("Mar", "Mai")
ret[meses1]
## Mar Mai
## 3 8
# Omitindo o primeiro mês
ret[-1]
## Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
## 2 3 7 8 3 5 9 1 4 6 3
## Sony
class("Mai")
## [1] "character"
meu_vetor <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
# matrix 3x3
minha_matriz <- matrix(data = meu_vetor, nrow = 3, ncol = 3)
minha_matriz
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
# Usando byrow = TRUE
matrix(data = c(2, 3, 4, 5), nrow = 2, ncol = 2, byrow = TRUE)
## [,1] [,2]
## [1,] 2 3
## [2,] 4 5
apple <- c(109.49, 109.90, 109.11, 109.95, 111.03)
ibm <- c(159.82, 160.02, 159.84, 160.35, 164.79)
micr <- c(59.20, 59.25, 60.22, 59.95, 61.37)
# cbind (como colunas) os vetores
cbind_acoes <- cbind(apple, ibm, micr)
cbind_acoes
## apple ibm micr
## [1,] 109.49 159.82 59.20
## [2,] 109.90 160.02 59.25
## [3,] 109.11 159.84 60.22
## [4,] 109.95 160.35 59.95
## [5,] 111.03 164.79 61.37
# rbind (por linhas) os vetores
rbind_acoes <- rbind(apple, ibm, micr)
rbind_acoes
## [,1] [,2] [,3] [,4] [,5]
## apple 109.49 109.90 109.11 109.95 111.03
## ibm 159.82 160.02 159.84 160.35 164.79
## micr 59.20 59.25 60.22 59.95 61.37
# Define matrix
apple_micr_matrix <- cbind(apple, micr)
apple_micr_matrix
## apple micr
## [1,] 109.49 59.20
## [2,] 109.90 59.25
## [3,] 109.11 60.22
## [4,] 109.95 59.95
## [5,] 111.03 61.37
# Gráfico de dispersão de Microsoft vs Apple
plot(apple_micr_matrix, main = 'Microsoft vs Apple', col = "red")
Visualizando a correlação dos dados.
# Correlação entre Apple e IBM
cor(apple, ibm)
## [1] 0.9131575
# matriz de ações
acoes <- cbind(apple, micr, ibm)
dim(acoes)
## [1] 5 3
# cor() das três ações
cor(acoes)
## apple micr ibm
## apple 1.0000000 0.6675003 0.9131575
## micr 0.6675003 1.0000000 0.8741410
## ibm 0.9131575 0.8741410 1.0000000
Apresentando algumas linhas e colunas.
# Terceira linha
acoes[3,]
## apple micr ibm
## 109.11 60.22 159.84
# Quarta e quinta linha da coluna ibm
acoes[4:5, "ibm"]
## [1] 160.35 164.79
# Todas as linhas das Colunas 'apple' e 'micr'
acoes [, c("apple","micr")]
## apple micr
## [1,] 109.49 59.20
## [2,] 109.90 59.25
## [3,] 109.11 60.22
## [4,] 109.95 59.95
## [5,] 111.03 61.37
acoes[]
## apple micr ibm
## [1,] 109.49 59.20 159.82
## [2,] 109.90 59.25 160.02
## [3,] 109.11 60.22 159.84
## [4,] 109.95 59.95 160.35
## [5,] 111.03 61.37 164.79
data.frame()# Variáveis
companhias <- c("A", "A", "A", "B", "B", "B", "B")
fluxo_caixa <- c(1000, 4000, 550, 1500, 1100, 750, 6000)
ano <- c(1, 3, 4, 1, 2, 4, 5)
# Data frame
caixa <- data.frame(companhias, fluxo_caixa, ano)
caixa
str(caixa)
## 'data.frame': 7 obs. of 3 variables:
## $ companhias : chr "A" "A" "A" "B" ...
## $ fluxo_caixa: num 1000 4000 550 1500 1100 750 6000
## $ ano : num 1 3 4 1 2 4 5
heads e tails de seus dados com estrutura# `head()` mostra as primeiras quatro linhas (padrão)
head(caixa, 4)
# `tail(, 3)` mostra as últimas três linhas
tail(caixa, 3)
# `str()` e a estrutura de seus dados
str(caixa)
## 'data.frame': 7 obs. of 3 variables:
## $ companhias : chr "A" "A" "A" "B" ...
## $ fluxo_caixa: num 1000 4000 550 1500 1100 750 6000
## $ ano : num 1 3 4 1 2 4 5
novosNomes <- c("companhia", "fluxo_caixa", "ano")
colnames(caixa) <- novosNomes
colnames(caixa)
## [1] "companhia" "fluxo_caixa" "ano"
# Terceira linha, segunda coluna
caixa[3, 2]
## [1] 550
# Quinta linha da coluna 'ano'
caixa[5, 'ano']
## [1] 2
# coluna 'ano'
caixa[, "ano"]
## [1] 1 3 4 1 2 4 5
# Seleciona a coluna "fluxo_caixa" e multiplica por 2
caixa[, "fluxo_caixa"] * 2
## [1] 2000 8000 1100 3000 2200 1500 12000
# Linhas da companhia B
subset(caixa, companhia == "B")
# Linhas com fluxo de caixa vencendo em 1 ano
subset(caixa, ano == '1')
# cenário trimestral
caixa$trimestre <- caixa$fluxo_caixa * 0.25
caixa
# Cenário bi-anual
caixa$dois_anos <- caixa$ano * 2
caixa
caixa$dois_anos <- 2
caixa
# Valor presente de $4000 em 3 anos a 5% a.a.
juros <- 5/100
anos <- 3
fluxo_caixa <- 4000
VP <- fluxo_caixa * (1 + juros) ^ -anos
VP
## [1] 3455.35
caixa$vp <- caixa$fluxo_caixa * (1 + juros) ^ -caixa$ano
caixa
# VP Total
(total_pv <- sum(caixa$vp))
## [1] 12604.71
# Informação da companhia B
(caixa_B <- subset(caixa, companhia == "B"))
# VP Total de B
(total_vp_B <- sum(caixa_B$vp))
## [1] 7744.488
# credit_rating - vetor de caracteres
credit_rating <- c("BB", "AAA", "AA", "CCC", "AA", "AAA", "B", "BB")
# Transformando em fator
credit_factor <- factor(credit_rating,
levels = c("CC", "CCC", "B", "BB", "AA", "AAA"),
ordered = TRUE)
credit_factor
## [1] BB AAA AA CCC AA AAA B BB
## Levels: CC < CCC < B < BB < AA < AAA
str(credit_rating)
## chr [1:8] "BB" "AAA" "AA" "CCC" "AA" "AAA" "B" "BB"
str(credit_factor)
## Ord.factor w/ 6 levels "CC"<"CCC"<"B"<..: 4 6 5 2 5 6 3 4
# Identifique níveis únicos
levels(credit_factor)
## [1] "CC" "CCC" "B" "BB" "AA" "AAA"
# Renomeie os níveis
levels(credit_factor) <- c("2C", "3C", "1B", "2B", "2A", "3A")
credit_factor
## [1] 2B 3A 2A 3C 2A 3A 1B 2B
## Levels: 2C < 3C < 1B < 2B < 2A < 3A
summary(credit_rating)
## Length Class Mode
## 8 character character
summary(credit_factor)
## 2C 3C 1B 2B 2A 3A
## 0 1 1 2 2 2
plot(credit_factor)
# Defina rankings AAA.
AAA_rank <- c(31, 48, 100, 53, 85, 73, 62, 74, 42, 38, 97, 61, 48, 86, 44, 9, 43, 18, 62,
38, 23, 37, 54, 80, 78, 93, 47, 100, 22, 22, 18, 26, 81, 17, 98, 4, 83, 5,
6, 52, 29, 44, 50, 2, 25, 19, 15, 42, 30, 27)
# Crie 4 "buckets" para AAA_rank usando cut()
AAA_factor <- cut(x = AAA_rank, breaks = c(0, 25, 50, 75, 100))
# Renomeie os níveis
niveis <- c("baixo", "médio", "alto", "muito alto")
levels(AAA_factor) <- niveis
AAA_factor
## [1] médio médio muito alto alto muito alto alto
## [7] alto alto médio médio muito alto alto
## [13] médio muito alto médio baixo médio baixo
## [19] alto médio baixo médio alto muito alto
## [25] muito alto muito alto médio muito alto baixo baixo
## [31] baixo médio muito alto baixo muito alto baixo
## [37] muito alto baixo baixo alto médio médio
## [43] médio baixo baixo baixo baixo médio
## [49] médio médio
## Levels: baixo médio alto muito alto
plot(AAA_factor)
# Use unique() para encontrar valores únicos
unique(credit_rating)
## [1] "BB" "AAA" "AA" "CCC" "B"
# Crie fatores ordenados
credit_factor_ordenado <- factor(credit_rating, ordered = TRUE, levels = c("AAA", "AA", "BB", "B", "CCC"))
# Gráfico de credit_factor_ordenado
plot(credit_factor_ordenado)
# Remova o nível A da posição 3 sem retirá-lo da variável original.
credit_factor
## [1] 2B 3A 2A 3C 2A 3A 1B 2B
## Levels: 2C < 3C < 1B < 2B < 2A < 3A
(novos_niveis <- credit_factor[-3])
## [1] 2B 3A 3C 2A 3A 1B 2B
## Levels: 2C < 3C < 1B < 2B < 2A < 3A
plot(novos_niveis)
# Remova o nível A das posições 3 e 7 os retirando da variável original.
novos_niveis_2 <- credit_factor[c(-3,-7), drop = TRUE]
novos_niveis_2
## [1] 2B 3A 3C 2A 3A 2B
## Levels: 3C < 2B < 2A < 3A
plot(novos_niveis_2)
stringsAsFactorsUma melhor organização dos dados.
# Variáveis
credit_rating <- c("AAA", "A", "BB")
donos_titulos <- c("Zé", "Maria", "Gisele")
# Crie o data frame com vetores de caracter, os títulos
titulos <- data.frame(credit_rating, donos_titulos, stringsAsFactors = FALSE)
str(titulos)
## 'data.frame': 3 obs. of 2 variables:
## $ credit_rating: chr "AAA" "A" "BB"
## $ donos_titulos: chr "Zé" "Maria" "Gisele"
# Crie uma coluna de fatores
titulos$credit_factor <- factor(titulos$credit_rating, ordered = TRUE, levels = c("AAA","A","BB"))
str(titulos)
## 'data.frame': 3 obs. of 3 variables:
## $ credit_rating: chr "AAA" "A" "BB"
## $ donos_titulos: chr "Zé" "Maria" "Gisele"
## $ credit_factor: Ord.factor w/ 3 levels "AAA"<"A"<"BB": 1 2 3
# Componentes da lista
nome <- "Apple e IBM"
apple <- c(109.49, 109.90, 109.11, 109.95, 111.03)
ibm <- c(159.82, 160.02, 159.84, 160.35, 164.79)
matriz_cor <- cor(cbind(apple, ibm))
# Crie a lista
carteira <- list(nome, apple, ibm, matriz_cor)
carteira
## [[1]]
## [1] "Apple e IBM"
##
## [[2]]
## [1] 109.49 109.90 109.11 109.95 111.03
##
## [[3]]
## [1] 159.82 160.02 159.84 160.35 164.79
##
## [[4]]
## apple ibm
## apple 1.0000000 0.9131575
## ibm 0.9131575 1.0000000
names(carteira) <- c("nome", "apple", "ibm", "correlacao")
carteira
## $nome
## [1] "Apple e IBM"
##
## $apple
## [1] 109.49 109.90 109.11 109.95 111.03
##
## $ibm
## [1] 159.82 160.02 159.84 160.35 164.79
##
## $correlacao
## apple ibm
## apple 1.0000000 0.9131575
## ibm 0.9131575 1.0000000
# Segundo e terceiro elementos da carteira
carteira[c(2,3)]
## $apple
## [1] 109.49 109.90 109.11 109.95 111.03
##
## $ibm
## [1] 159.82 160.02 159.84 160.35 164.79
# Use $ para obter as correlações
options(digits = 4)
carteira$correlacao
## apple ibm
## apple 1.0000 0.9132
## ibm 0.9132 1.0000
# Adicione pesos: 20% Apple, 80% IBM
carteira$peso <- c(apple = .20, ibm = .80)
carteira
## $nome
## [1] "Apple e IBM"
##
## $apple
## [1] 109.5 109.9 109.1 110.0 111.0
##
## $ibm
## [1] 159.8 160.0 159.8 160.3 164.8
##
## $correlacao
## apple ibm
## apple 1.0000 0.9132
## ibm 0.9132 1.0000
##
## $peso
## apple ibm
## 0.2 0.8
# Altere os pesos: 30% Apple, 70% IBM
carteira$peso <- c(apple = .30, ibm = .70)
carteira
## $nome
## [1] "Apple e IBM"
##
## $apple
## [1] 109.5 109.9 109.1 110.0 111.0
##
## $ibm
## [1] 159.8 160.0 159.8 160.3 164.8
##
## $correlacao
## apple ibm
## apple 1.0000 0.9132
## ibm 0.9132 1.0000
##
## $peso
## apple ibm
## 0.3 0.7
# Remova os preços da ação da Microsoft da carteira
carteira$microsoft <- NULL
split()# Defina o grupo a partir do ano
grupo <- caixa$ano
# Separe a caixa com os novos grupos
caixa_div <- split(caixa, grupo)
caixa_div
## $`1`
## companhia fluxo_caixa ano trimestre dois_anos vp
## 1 A 1000 1 250 2 952.4
## 4 B 1500 1 375 2 1428.6
##
## $`2`
## companhia fluxo_caixa ano trimestre dois_anos vp
## 5 B 1100 2 275 2 997.7
##
## $`3`
## companhia fluxo_caixa ano trimestre dois_anos vp
## 2 A 4000 3 1000 2 3455
##
## $`4`
## companhia fluxo_caixa ano trimestre dois_anos vp
## 3 A 550 4 137.5 2 452.5
## 6 B 750 4 187.5 2 617.0
##
## $`5`
## companhia fluxo_caixa ano trimestre dois_anos vp
## 7 B 6000 5 1500 2 4701
# Junte de volta os dados
caixa_original <- unsplit(caixa_div, grupo)
caixa_original
Como dar atributos aos dados.
matriz <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)
rownames(matriz) <- c("Linha1", "Linha2")
colnames(matriz) <- c("Col1", "Col2", "Col3")
matriz
## Col1 Col2 Col3
## Linha1 1 3 5
## Linha2 2 4 6
fator <- factor(c("A", "A", "B"), ordered = TRUE, levels = c("A", "B"))
# atributos da variável matriz
attributes(matriz)
## $dim
## [1] 2 3
##
## $dimnames
## $dimnames[[1]]
## [1] "Linha1" "Linha2"
##
## $dimnames[[2]]
## [1] "Col1" "Col2" "Col3"
# dimensão de 'matriz'
attr(matriz, "dim")
## [1] 2 3
dim(matriz) # mais simples
## [1] 2 3
# atributes de 'fator'
attributes(fator)
## $levels
## [1] "A" "B"
##
## $class
## [1] "ordered" "factor"
O conteúdo deste documento se baseia livremente em notas do curso Introduction to R for Finance do Datacamp.↩︎