IBOV

106.766,29 pts

-0,15%

SP500

4.671,78 pts

+0,20%

DJIA

35.971,96 pts

+0,17%

NASDAQ

15.624,05 pts

+0,08%

IFIX

2.786,52 pts

+0,13%

BRENT

US$ 86,00

-0,07%

IO62

¥ 711,50

+0,56%

TRAD3

R$ 4,60

+3,37%

ABEV3

R$ 15,10

+0,73%

AMER3

R$ 30,29

-0,06%

ASAI3

R$ 12,12

-0,08%

AZUL4

R$ 26,33

+1,07%

B3SA3

R$ 12,21

-0,08%

BIDI11

R$ 23,68

+7,14%

BBSE3

R$ 19,46

+0,05%

BRML3

R$ 8,34

+6,24%

BBDC3

R$ 17,42

-0,11%

BBDC4

R$ 20,81

-0,28%

BRAP4

R$ 27,32

-0,72%

BBAS3

R$ 30,39

-0,06%

BRKM5

R$ 51,15

-1,93%

BRFS3

R$ 24,04

+0,12%

BPAC11

R$ 19,90

+0,35%

CRFB3

R$ 14,43

+0,20%

CCRO3

R$ 11,38

-0,08%

CMIG4

R$ 12,80

+0,55%

HGTX3

R$ 37,51

+0,00%

CIEL3

R$ 2,04

+0,99%

COGN3

R$ 2,15

+3,36%

CPLE6

R$ 6,38

+0,63%

CSAN3

R$ 21,36

+0,66%

CPFE3

R$ 25,90

+0,19%

CVCB3

R$ 11,70

-0,08%

CYRE3

R$ 14,29

+0,70%

ECOR3

R$ 7,19

-0,13%

ELET3

R$ 31,60

+0,56%

ELET6

R$ 31,18

+0,28%

EMBR3

R$ 21,92

-1,00%

ENBR3

R$ 20,83

+1,70%

ENGI11

R$ 40,87

+0,19%

ENEV3

R$ 12,65

+3,94%

EGIE3

R$ 38,39

+0,26%

EQTL3

R$ 22,61

-0,04%

EZTC3

R$ 18,64

+1,80%

FLRY3

R$ 17,89

-0,22%

GGBR4

R$ 28,35

+0,28%

GOAU4

R$ 11,69

-0,42%

GOLL4

R$ 16,91

+0,95%

NTCO3

R$ 21,79

-0,04%

HAPV3

R$ 10,18

+0,09%

HYPE3

R$ 28,00

+3,35%

IGTA3

R$ 33,24

+0,00%

GNDI3

R$ 60,09

+0,95%

IRBR3

R$ 3,55

+0,28%

ITSA4

R$ 9,66

+1,04%

ITUB4

R$ 23,45

-0,21%

JBSS3

R$ 37,34

-0,13%

JHSF3

R$ 4,91

+1,23%

KLBN11

R$ 25,05

-1,06%

RENT3

R$ 51,10

+3,33%

LCAM3

R$ 22,64

-1,04%

LWSA3

R$ 8,37

-4,34%

LAME4

R$ 5,72

+0,70%

LREN3

R$ 24,02

+0,20%

MGLU3

R$ 6,32

-0,15%

MRFG3

R$ 23,44

+3,07%

BEEF3

R$ 10,24

-0,29%

MRVE3

R$ 11,06

+1,09%

MULT3

R$ 18,49

+2,04%

PCAR3

R$ 19,85

-0,30%

PETR3

R$ 34,63

+0,20%

PETR4

R$ 31,44

-0,03%

VBBR3

19,88

+0,25%

PRIO3

R$ 23,13

+1,00%

QUAL3

R$ 15,89

-0,25%

RADL3

R$ 21,09

+0,42%

RAIL3

R$ 16,29

-0,12%

SBSP3

R$ 35,22

+0,31%

SANB11

R$ 31,84

-0,06%

CSNA3

R$ 25,40

-1,24%

SULA11

R$ 23,15

+0,52%

SUZB3

R$ 62,49

-0,44%

TAEE11

R$ 36,10

+0,11%

VIVT3

R$ 46,83

-0,10%

TIMS3

R$ 12,67

+0,31%

TOTS3

R$ 25,37

+0,67%

UGPA3

R$ 13,12

-0,30%

USIM5

R$ 16,30

-0,91%

VALE3

R$ 84,13

-0,66%

VIIA3

R$ 3,94

-0,75%

WEGE3

R$ 30,57

-0,42%

YDUQ3

R$ 19,08

+0,95%

IBOV

106.766,29 pts

-0,15%

SP500

4.671,78 pts

+0,20%

DJIA

35.971,96 pts

+0,17%

NASDAQ

15.624,05 pts

+0,08%

IFIX

2.786,52 pts

+0,13%

BRENT

US$ 86,00

-0,07%

IO62

¥ 711,50

+0,56%

TRAD3

R$ 4,60

+3,37%

ABEV3

R$ 15,10

+0,73%

AMER3

R$ 30,29

-0,06%

ASAI3

R$ 12,12

-0,08%

AZUL4

R$ 26,33

+1,07%

B3SA3

R$ 12,21

-0,08%

BIDI11

R$ 23,68

+7,14%

BBSE3

R$ 19,46

+0,05%

BRML3

R$ 8,34

+6,24%

BBDC3

R$ 17,42

-0,11%

BBDC4

R$ 20,81

-0,28%

BRAP4

R$ 27,32

-0,72%

BBAS3

R$ 30,39

-0,06%

BRKM5

R$ 51,15

-1,93%

BRFS3

R$ 24,04

+0,12%

BPAC11

R$ 19,90

+0,35%

CRFB3

R$ 14,43

+0,20%

CCRO3

R$ 11,38

-0,08%

CMIG4

R$ 12,80

+0,55%

HGTX3

R$ 37,51

+0,00%

CIEL3

R$ 2,04

+0,99%

COGN3

R$ 2,15

+3,36%

CPLE6

R$ 6,38

+0,63%

CSAN3

R$ 21,36

+0,66%

CPFE3

R$ 25,90

+0,19%

CVCB3

R$ 11,70

-0,08%

CYRE3

R$ 14,29

+0,70%

ECOR3

R$ 7,19

-0,13%

ELET3

R$ 31,60

+0,56%

ELET6

R$ 31,18

+0,28%

EMBR3

R$ 21,92

-1,00%

ENBR3

R$ 20,83

+1,70%

ENGI11

R$ 40,87

+0,19%

ENEV3

R$ 12,65

+3,94%

EGIE3

R$ 38,39

+0,26%

EQTL3

R$ 22,61

-0,04%

EZTC3

R$ 18,64

+1,80%

FLRY3

R$ 17,89

-0,22%

GGBR4

R$ 28,35

+0,28%

GOAU4

R$ 11,69

-0,42%

GOLL4

R$ 16,91

+0,95%

NTCO3

R$ 21,79

-0,04%

HAPV3

R$ 10,18

+0,09%

HYPE3

R$ 28,00

+3,35%

IGTA3

R$ 33,24

+0,00%

GNDI3

R$ 60,09

+0,95%

IRBR3

R$ 3,55

+0,28%

ITSA4

R$ 9,66

+1,04%

ITUB4

R$ 23,45

-0,21%

JBSS3

R$ 37,34

-0,13%

JHSF3

R$ 4,91

+1,23%

KLBN11

R$ 25,05

-1,06%

RENT3

R$ 51,10

+3,33%

LCAM3

R$ 22,64

-1,04%

LWSA3

R$ 8,37

-4,34%

LAME4

R$ 5,72

+0,70%

LREN3

R$ 24,02

+0,20%

MGLU3

R$ 6,32

-0,15%

MRFG3

R$ 23,44

+3,07%

BEEF3

R$ 10,24

-0,29%

MRVE3

R$ 11,06

+1,09%

MULT3

R$ 18,49

+2,04%

PCAR3

R$ 19,85

-0,30%

PETR3

R$ 34,63

+0,20%

PETR4

R$ 31,44

-0,03%

VBBR3

19,88

+0,25%

PRIO3

R$ 23,13

+1,00%

QUAL3

R$ 15,89

-0,25%

RADL3

R$ 21,09

+0,42%

RAIL3

R$ 16,29

-0,12%

SBSP3

R$ 35,22

+0,31%

SANB11

R$ 31,84

-0,06%

CSNA3

R$ 25,40

-1,24%

SULA11

R$ 23,15

+0,52%

SUZB3

R$ 62,49

-0,44%

TAEE11

R$ 36,10

+0,11%

VIVT3

R$ 46,83

-0,10%

TIMS3

R$ 12,67

+0,31%

TOTS3

R$ 25,37

+0,67%

UGPA3

R$ 13,12

-0,30%

USIM5

R$ 16,30

-0,91%

VALE3

R$ 84,13

-0,66%

VIIA3

R$ 3,94

-0,75%

WEGE3

R$ 30,57

-0,42%

YDUQ3

R$ 19,08

+0,95%

R: Criando seu primeiro Data Frame

lucca

17 AGO

6 MIN

R: Criando seu primeiro Data Frame

Agora que já aprendemos sobre variáveis, vetores e matrizes, chegou a hora de aprendermos a construir um Data frame no programa R. Nada mais, do que um dos conjuntos de dados mais importantes do R, é uma estrutura base para manipular diversas bases de dados financeiras.

Para facilitar o entendimento, separamos o texto nos seguintes tópicos:

  • O que é (de fato) um Data Frame?
  • Criando o primeiro conjunto de dados
  • Explorando a programação em R
  • Conclusão

Bons estudos!

Data Frame

O que é (de fato) um Data Frame?

Um Data Frame pode ser visto como uma “tabela” formada por um conjunto de dados, é similar a uma planilha do Excel, contendo linhas e colunas. Diferente das matrizes, ele aceita tipos de dados diferentes, com ele podemos ter – por exemplo – uma coluna de números seguida por uma coluna de texto.

Criando o primeiro Data Frame

Como dito acima, a principal vantagem de usarmos data frames é poder usar diferentes tipos de dados nas colunas. Vamos então criar o nosso primeiro conjunto de dados, que armazenará informações de uma carteira de dividendos fictícia contendo TAEE11, CSMG3, CPLE3, BRAP4 e VALE3.

Primeiro, vamos criar o vetor que armazena os nomes das ações.

acoes_dividendos <- c(“TAEE11”, “CSMG3”, “CPLE3”, “BRAP4”, “VALE3”)

Agora, vamos criar o vetor que armazena um yield anual fictício para cada uma das ações:

yield_dividendos <- c(0.11, 0.08, 0.12, 0.108, 0.105)

Obs.: Quando transformamos os vetores em colunas do data frame, o primeiro elemento do vetor de ações ficará na mesma linha que o primeiro elemento do vetor de yield, mas uma coluna antes.

Em seguida, criaremos mais um vetor para armazenar o aporte fictício em cada um dos papéis.

aporte_acoes <- c(1000, 900, 200, 500, 400)

Obs.: O terceiro vetor ficará na terceira coluna, com isso quis dizer que TAEE11, por exemplo, tem um yield de 0.11 e recebeu um aporte de 1000.

Finalmente, vamos criar o conjunto de dados. Para isso, usarei a função data.frame() e passarei os vetores como argumentos (a ordem importa).

carteira_dividendos <- data.frame(acoes_dividendos, yield_dividendos, aporte_acoes)

Feito! O seu primeiro data frame foi criado com sucesso, agora, temos uma pequena “planilha” informando nome, yield e aporte das ações da nossa carteira de dividendos:

carteira_dividendos

acoes_dividendos     yield_dividendos     aporte_acoes

1  TAEE11                       0.110                           1000
2  CSMG3                      0.080                           900
3  CPLE3                        0.120                           200
4  BRAP4                       0.108                           500
5  VALE3                       0.105                            400

Explorando o Data Frame

Existem três funções que são bastante úteis para obtermos informações rápidas sobre data frames grandes:

1. head(): com esta função, obtemos o retorno das primeiras linhas do nosso conjunto de dados (por padrão das seis primeiras linhas). A função head() aceita o argumento “n= …” que define o número de linhas que retornarão no comando.

2. tail(): retorna as últimas linhas do nosso data frame. Também aceita o argumento “n = …” que nos permite escolher o número de linhas que serão retornadas.

3. str(): checa a estrutura do nosso dataframe, com ela podemos descobrir que tipos de dados estão presentes em cada linha e cada coluna.

Antes de testarmos as três funções, criaremos mais um data frame, dessa vez com 10 linhas (similar ao anterior):

acoes_dividendos_2 <- c(“TAEE11”, “CSMG3”, “CPLE3”, “BRAP4”, “VALE3”, “BEEF3”,
“DEXP3”, “ITSA4”, “BBSE3”, “B3SA3”)

yield_dividendos_2 <- c(0.11, 0.08, 0.12, 0.108, 0.105, 0.91, 0.131, 0.05, 0.06, 0.10 )

aporte_acoes_2 <- c(1000, 900, 200, 500, 400, 300, 600, 700, 900, 1000)

carteira_dividendos_2 <- data.frame(acoes_dividendos_2, yield_dividendos_2, aporte_acoes_2) > carteira_dividendos_2

carteira dividendos

Feito! Temos agora um conjunto de dados com 10 linhas utilizando o programa R.

Vamos usar a função head() para explorar as primeiras linhas do nosso data frame:

ações dividendos

Note que ele nos retornou apenas as 6 primeiras linhas, nos dando uma prévia do nosso conjunto de dados.

Agora vamos usar a função tail() para explorar as últimas linhas do novo conjunto:

yield dividendos

Note que ele nos retornou as últimas 6 linhas do nosso Data Frame.

Por fim, vamos testar a função str() no nosso Data Frame “carteira_dividendos_2”:

> str(carteira_dividendos_2)
‘data.frame’: 10 obs. of 3 variables:
$ acoes_dividendos_2: chr “TAEE11” “CSMG3” “CPLE3” “BRAP4” …
$ yield_dividendos_2: num 0.11 0.08 0.12 0.108 0.105 0.91 0.131 0.05 0.06 0.1
$ aporte_acoes_2 : num 1000 900 200 500 400 300 600 700 900 1000

Note que a função nos informa o tipo de dado presente em cada coluna.

Na primeira coluna (acoes_dividendos_2) temos a presença de caracteres (chr). E na segunda (yield_dividendos_2) e na terceira coluna (aporte_acoes_2) temos a presença de variáveis numéricas (num).

Agora que já sabemos os comandos básicos, vamos aprender a acessar subconjuntos do data frame.

Acessando subconjuntos do Data Frame

Assim como as matrizes, podemos encontrar subconjuntos do nosso conjunto de dados. Usando o mesmo data frame do exemplo anterior, vamos encontrar apenas as informações das três primeiras linhas.

Para isso, também usamos o operador […,…] com o primeiro elemento indicando o número de linhas e o segundo (sem nada) indicando para retornar todas as colunas:

carteira_dividendos_2[1:3,]

carteira

dividendos yield

Também podemos acessar as colunas pelo nome, vamos por exemplo acessar a oitava linha da coluna aporte_acoes_2:

> carteira_dividendos_2[8, “aporte_acoes_2”]
[1] 700

Se referindo ao aporte feito na oitava ação (ITSA4) da nossa carteira.

Outro operador fundamental, principalmente para manipularmos data frames relacionados a ações é o “$”, com ele conseguimos obter todos os elementos de uma mesma coluna. Vamos acessar a coluna “acoes_dividendos_2”:

> carteira_dividendos_2$acoes_dividendos_2
[1] “TAEE11” “CSMG3” “CPLE3” “BRAP4” “VALE3” “BEEF3” “DEXP3” “ITSA4”
[9] “BBSE3” “B3SA3”

Usando o comando subset()

comando subset

A função subset() pode nos ajudar a acessar elementos específicos, com ela podemos, por exemplo, acessar só as informações relativas à ação TAEE11. Basta passarmos no argumento o nome do data frame, o nome da variável e o nome da ação:

> subset(carteira_dividendos_2, acoes_dividendos_2 == “TAEE11”)
Ações             DY            Aporte
1 TAEE11      0.11             1000

Também podemos “procurar” por ações por um dividend yield desejado com a mesma função. Vamos procurar ações com o DY de mais de 6%:

subset(carteira_dividendos_2, yield_dividendos_2 > 0.06)

subset yield

Adicionando e removendo colunas de um Data Frame

colunas dataframe

Para adicionarmos colunas no nosso Data Frame, utilizaremos um processo similar ao de criação de variáveis, só que dessa vez usaremos o operador “$” para denotar a adição de uma nova coluna. Vamos no exemplo adicionar a coluna “teste”:

carteira_dividendos_2$teste <- c(1, 1, 100, 100, 100, 100, 100, 100, 100, 100)

yield teste

Também podemos deletar facilmente uma coluna do nosso conjunto de dados, basta apontar a coluna a “NULL”. Vamos deletar a coluna “teste” do exemplo anterior:

carteira_dividendos_2$teste <- NULL

null

Renomeando as colunas do data frame com a função colnames()

carteira dividendos

Uma coisa que pode ter incomodado no processo de manipulação do data frame é o nome das colunas, fica um tanto feio o nome da coluna como “aporte_acoes_2”.

Para resolver, podemos usar a função colnames() e renomear cada uma de nossas colunas passando um vetor de caracteres:

colnames(carteira_dividendos_2) <- c(“Ações”, “DY”, “Aporte”)

aporte

Conclusão

Agora que aprendemos o que é um data frame e como construir um, podemos começar a explorar pacotes de dados financeiros. No artigo de Introdução ao R, aprenderemos a baixar dados da B3, organizá-los em um data frame e construir gráficos estáticos e animados.

Baixe nosso app grátis! No TC você acompanha as principais notícias e cotações do mercado em tempo real, além de ter acesso a canais exclusivos para interagir com os melhores profissionais.

A gente também está no Instagram e no TikTok. Acompanhe!

Estudante de Economia na UFPE

Aprenda tudo sobre contabilidade

E-BOOK

Aprenda tudo sobre contabilidade

Neste e-book — “Contabilidade”, trazemos informações e conceitos importantes sobre contabilidade financeira.

Receba todas as novidades do TC

Deixe o seu contato com a gente e saiba mais sobre nossas novidades, eventos e facilidades.