<repo_name>kleberformiga/contabilidados<file_sep>/R/BaixaDados.R
#' Transforma dados de matrix do economatica em painel
#'
#' Em pesquisas na area de financas com dados em painel o pesquisador, por vezes,
#' faz estimacoes com dados dispostos em painel. Contudo, as fontes de coleta nem
#' sempre disponibiliza dados no formato painel. Esse formato consiste em dispor
#' os dados em cross-section (i) e tempo (t). Esse codigo tranforma em painel os
#' dados coletados na base Economatica(R), desde que coletadas no template MATRIX.
#' Nesse template os dados sao dispostos em colunas (nao painel) em que cada
#' coluna possui o codigo da empresa para uma mesma variavel. A vantagem desse
#' codigo eh permitir que os dados sejam coletados em um unico arquivo do tipo
#' xlsx em que cada aba contera uma variavel de interesse da pesquisa.
#'
#'
#' @param Nome Nome da variavel. O nome informado sera processado como sendo
#' o nome da variavel no banco de dados e o nome do banco de dados (com letras maiusculas)
#' @param PathFile Caminho do arquivo xlsx.
#' @param Periodo Nome a ser dado a frequencia. Essa informacao fica a criterio
#' do pesquisador para controle de seu banco de dados. Caso os dados coletados
#' sejam trimestrais, pode-se informar #' "trim", "trimestre", "quarter", etc.
#' @param Planilha Informar o numero da aba na qual estao os dados a serem
#' transformados em painel.
#' @param ClassPeriodo Tipo de variavel para periodo do matrix. Se os dados sao
#' trimestreis 1T2018, por exemplo, informar "text". O padrao eh data, pois
#' os matrix, normalmente reportam uma data no periodo.
#' @param ClassValue Tipo de variavel para os valores coletados. Se for setor,
#' por exemplo, colocar "character". Porém a maioria dos valores coletados sao
#' decorrentes de dados financeiros. Por isso o padrao eh "numeric".
#'
#' @return Para melhor desempenho no uso do codigo, todos os matrix deverao ser
#' coletados com as mesmas empresas e o mesmo periodo, permitindo a criacao de
#' um painel balanceado, alem de dar ao pesquisador maior controle sobre os dados
#' coletados e facilitar a juncao de bancos.
#'
#' @seealso \code{\link{data.table}} para manipulacao de dados
#' @seealso \code{\link{readxl}} para importacao de dados xlsx
#' @source  Os dados usados no exemplo estao disponiveis em \url{https://github.com/kleberformiga/contabilidados/blob/master/ExemploEconomatica.xlsx?raw=true}
#'
#' @keywords Data.table, teste
#' @examples
#' Considerando a transformacao da primeira aba do arquivo xlsx na qual esta a
#' variavel ATIVO TOTAL, coletada no matrix na frequencia trimestral, cujo nome
#' escolhido seja "AtTot": disponivel em  #SOURCE:
#'
#' BaixaDados("AtTot", "caminho/exemplo1.xlsx", "trim", 1)
#'
#' Considerando um arquivo com duas ou mais abas (nesse exemplo, duas) em que
#' o pesquisador deseje transformar em painel de forma automatica:
#'
#' dados <- c("precos", "vrmerc") # Vetor com dados de precos e valor de mercado
#'
#' for (i in seq_along(dados)) {
#'    BaixaDados(dados[i], "caminho/nomedoarquivo.xlsx", "trim", i)
#' }
#'
#' Após rodar esse exemplo, as duas variaveis estarao dispostas em painel prontas
#' para serem unidas em um unico banco de dados. O pacote \code{\link{dplyr}} eh
#' recomendado para esse fim.
#'
#' @export
BaixaDados <- function(Nome, PathFile, Periodo, Planilha, ClassPeriodo = "date", ClassValue = "numeric"){
  a <- ncol(read_xlsx(PathFile, sheet = Planilha, skip = 1, na = "-"))
  assign(toupper(paste0("BD", Nome)),
         read_xlsx(PathFile, sheet = Planilha, skip = 1, na = "-",
                   col_types = c(ClassPeriodo, rep(ClassValue, a-1))),envir = .GlobalEnv)
  setnames(get(toupper(paste0("BD", Nome))), 1L, Periodo)
  assign(toupper(paste0("BD", Nome)), melt(data.table(get(toupper(paste0("BD", Nome)))),
         id.vars = Periodo, variable.name="cod", value.name = Nome, variable.factor = F,
         value.factor = F), envir = .GlobalEnv)
}

<file_sep>/eccd_functions.R
cntdd <- file.path("https://raw.githubusercontent.com",
									 "kleberformiga/contabilidados/master",
									 "contabilidados.R")
source(cntdd)

options(scipen = 999)

cntdd.carregaPacotes("tidyverse")  


bd.eccd.001 <- readRDS("bd.eccd.001.rds")


eccd.n1.evolucao <- function(codigo = "PETR4", conta = ativo, descricao = "Ativo"){
	
	conta <- enquo(conta)
	
	dados <- bd.eccd.001 %>% filter(cod %in% codigo)
	print(dados)
	
	ggplot(dados, 
				 aes(x = ano, 
				 		y = !!conta,
				 		color = cod)) +
		scale_y_continuous(labels = scales::unit_format(
			unit = "k", 
			scale = 1e-3,
			accuracy = 1, big.mark = ",")) +
		geom_line(size = 1.5, 
							color = "lightgrey") +
		geom_point(size = 3, 
							 color = "steelblue") +
		labs(y = NULL, 
				 x = NULL,
				 title = paste0("Evolução da conta ", descricao, " da empresa ", codigo),
				 subtitle = "Em milhares de reais",
				 caption = paste0("Elaboração: contabiliDados  |", "\n",
				 								 "Fonte: Economatica\U00AE  |")) +
		cntdd.theme
}

eccd.n1.evolucao()



eccd.n1.comparaevolucao <- function(codigos = c("MGLU3", "LREN3"), conta = ativo, descricao = "Ativo"){
	
	if(length(codigos) < 2){message("Coloque pelo menos dois códigos")}
	conta <- enquo(conta)
	
	ggplot(data = bd.eccd.001 %>% filter(cod %in% codigos),
				 mapping = aes(x = ano, y = !!conta/1000, color = cod), na.rm = TRUE) +
		geom_line(alpha = .7,
							size  = 2) + 
		labs(title = paste0("Evolução da conta ", descricao, ", por ano"),
				 subtitle = "em milhares R$",
				 caption = paste0("elaborador por contabiliDados", "\n",
                          "Fonte: http://www.economatica.com.br/"),
				 x = NULL, 
				 y = NULL,
				 color = "Código") +
		cntdd.theme
}

eccd.n1.comparaevolucao()


eccd.n1.relacaoContas <- function(codigo = "VALE3",
																	x = divida, y = ativo,
																	descX = "Dívida",
																	descY = "Ativo",
																	descCod = "VALE"){

	
	print(bd.eccd.001 %>% filter(cod == codigo & ano < 2017))
	
	ggplot(bd.eccd.001 %>% filter(cod == codigo & ano < 2017),
				 aes(x = !! enquo(x)/1000,
				 		y = !!enquo(y)/1000,
				 		color = cod), na.rm = TRUE) +
		geom_point(alpha = .7,
							 size  = 4, color = "blue") +
		geom_smooth(method='lm', formula= y~x, show.legend = F) +
		geom_text(aes(label=ano),hjust=-0.3, vjust=0.2, color = "blue", show.legend = F) +
		labs(title = paste0("Relação entre ", descX, "(X) e ", descY, "(Y) da empresa ", descCod),
				 subtitle = "em milhares R$",
				 caption = paste0("elaborado por contabiliDados", "\n", "Fonte: economatica"),
				 x = NULL,
				 y = NULL) +
		cntdd.theme
}

eccd.n1.relacaoContas()
<file_sep>/R/CarregaPacotes.R
#' Carrega pacotes requeridos
#'
#' Verifica se o pacote requerido estah instalado. Caso nao esteja, instala e
#' carrega o pacote requerido.
#'
#' @param pcts Nome do pacote requerido.
#'
#' @return Os dados fornecidos devem ser do tipo character, portanto, deve ser
#' informado entre aspas.
#'
#' @examples
#' O uso natural da funcao eh:
#' CarregaPacotes("dplyr")
#'
#' Nesse caso, verificaria se o pacote dplyr estaria instalado. Caso positivo,
#' carregaria o pacote. Caso negativo, instalaria e, posteriormente a instalacao,
#' o carregaria.
#'
#' Para um uso mais geral, recomenda-se o uso de um vetor de pacotes requeridos
#' para desenvolver o trabalho. Nesse caso, poderia utilizar o seguinte codigo:
#'
#' pacotes <- c("tidyverse", "data.table", "readxl") # Vetor com tres pacotes
#'
#' for(i in pacotes){CarregaPacotes(i)} # Verifica todos os pacotes informados
#'
#' Ao final tem-se todos os pacotes informados instalados e/ou carregados.
#'
#' @export

CarregaPacotes <- function(pcts){
  if(!require(pcts, character.only = T)){install.packages(pcts);
    require(pcts, character.only = T, quietly = T)}
}
<file_sep>/verplot.R
verPlot <- function(setor){
  ggplot(dados[econBov %in% as.character(setores[c(setor)]), .(econBov, trim2, divAtivo, plAtivo)], aes(trim2 , value, color = variable)) +
    geom_line(aes(y = divAtivo, col = "divAtivo")) +
    geom_line(aes(y = plAtivo, col = "plAtivo")) +
    ggtitle(paste0("Fonte de financiamento do setor \n", setores[c(setor)])) +
    xlab("Valor em percentual") + ylab("Trimestres") +
    labs(color="Variáveis") +
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
          panel.background = element_blank(), axis.line = element_line(colour = "black")) +
    theme(legend.position = "bottom")
}
<file_sep>/README.md
# Contabilidados
Pacote voltado a disseminacao de funcoes e codigos criados pela equipe CONTABILIDADOS com o intuito de facilitar o processo de coleta, tratamento e estimacao de dados para pesquisas academicas em contabilidade e financas.
<file_sep>/contabilidados.R
cntdd.lista <- function(){
  cat("cntdd.carregaPacotes:
      Carregar um pacote. Caso não exista, instala e carrega", "\n")
  cat("\n")
  cat("cntdd.BaixaDados:
      Baixar dados da aba de uma planilha coletados por meio de matrix do economatica", "\n")
  cat("\n")
  cat("cntdd.BaixaDadosReuters:
      Baixar dados da aba de uma planilha coletados por meio da base Reuters", "\n")
  cat("\n")
  cat("cntdd.mediaGeometrica:
      Gerar a média geométrica do vetor informado", "\n")
  cat("\n")
  cat("cntdd.baixaPrecos:
      Baixar precos de papeis negociados na bolsa e gerar grafico", "\n")
  cat("\n")
  cat("cntdd.variosMatrix:
      Criar vetores com base em abas do excel coletadas no economatica por meio de matrix", "\n")
  cat("\n")
  cat("cntdd.limpaMatrix:
      Limpar objetos temporarios criados durante a uniao de matrix por meio da funcao 'cntdd.uneMatrix'", "\n")
  cat("\n")
  cat("cntdd.uneMatrix:
      Transformar em painel variaveis coletadas em matrix (Economatica)", "\n")
  cat("\n")
}

cntdd.carregaPacotes <- function (pcts = c("dplyr", "data.table", "readxl",
                                     "tseries", "ggplot2", "ggrepel" )){
  
  ################ Instruções #####################################################
  # Objetivo: Carregar um pacote. Caso não exista, instala e carrega
  # Informa um vetor com os pacotes a serem instalados
  # Se nada informado, por padrão, instala os pacotes necessarios aos demais
  # codigos do contabilidados
  # Esses pacotes são necessários para manipulação de dados
  #################################################################################
  
  for (i in pcts) {
    if (!require(i, character.only = T)) {
      install.packages(i)
      require(i, character.only = T, quietly = T)
    }
  }
}

cntdd.carregaPacotes()


cntdd.BaixaDados <- function (Nome, PathFile, Periodo, Planilha, ClassPeriodo = "date", 
                        ClassValue = "numeric") {
  ################ Instruções #####################################################
  # Objetivo: Baixar dados da aba de uma planilha coletados por meio de matrix
  #           do economatica
  #           
  # Nome: Informe o nome da variável coletada no matrix do economatica
  # PathFile: Informe o caminho do arquivo xlsx onde está o matrix do economatica
  # Periodo: Informe "trim" para trimestre, "data" para data, "ano" para ano, etc.
  # Planilha: Informe o número da planilha ou nome da aba que contém o matrix
  # ClassPeriodo: Por padrão é formato data, mas se no matrix o período contiver
  #               letras, informar "text" para indicar ser um texto (string)
  # ClassValue: Por padrão é formato numérico, mas se os dados coletados forem
  #             texto (nome do sócio, por exemplo), infomar "text".
  #################################################################################
  
    a <- ncol(read_xlsx(PathFile, sheet = Planilha, skip = 1, 
                      na = "-"))
  assign(toupper(paste0("BD", Nome)), read_xlsx(PathFile, sheet = Planilha, 
                                                skip = 1, na = "-", col_types = c(ClassPeriodo, rep(ClassValue, 
                                                                                                    a - 1))), envir = .GlobalEnv)
  setnames(get(toupper(paste0("BD", Nome))), 1L, Periodo)
  assign(toupper(paste0("BD", Nome)), data.frame(melt(data.table(get(toupper(paste0("BD", 
                                                                         Nome)))), id.vars = Periodo, variable.name = "cod", value.name = Nome, 
                                           variable.factor = F, value.factor = F)), envir = .GlobalEnv)
}


cntdd.BaixaDadosReuters <- function (Nome, PathFile, Planilha, RANGE = "P:R", SKIP = 0) 
{
  assign(toupper(Nome), read_xlsx(PathFile, sheet = Planilha, 
                                  skip = SKIP, na = c("-", "NULL", "#N/A"), range = cell_cols(RANGE)), 
         envir = .GlobalEnv)
  setnames(get(toupper(Nome)), 1L:3L, c("cod", "data", Nome))
  setDT(get(toupper(Nome)))
}


cntdd.mediaGeometrica <- function(x){

  ################ Instruções #####################################################
  # Objetivo: Gerar a média geométrica do vetor informado
  # Informa um vetor com os números que comporão a média
  # Valores NA serão desconsiderados
  #################################################################################
  
  round(prod(x, na.rm = T)^(1/length(x[!is.na(x)])), 3)
}

cntdd.baixaPrecos <- function(nome = "precos", x = "^BVSP", inicio = Sys.Date()-30,
                        fim = Sys.Date()-1, freq = "d"){
  
  ################ Instruções #####################################################
  # Objetivo: Baixar precos de papeis negociados na bolsa e gerar grafico.
  # Informa o nome do objeto que pretende criar e escolhe os papeis desejados,
  # período e frequencia dos dados, conforme exemplo abaixo:
  # 
  #           cntdd.baixaPrecos(nome = "precos",
  #                             x = c("RADL3.SA", "PETR3.SA", "^BVSP"),
  #                             inicio = "2010-01-01",
  #                             fim = "2010-01-31",
  #                             freq = "d")
  # 
  # nome: Nome do objeto a ser criado no environment do R. Se nada informado,
  #       o padrao eh "precos".
  # x = Vetor com os papeis de interesse na serie de precos. Se nada informado,
  #     o padrao eh o indice bovespa "^BVSP".
  # inicio: Data inicial no formato "yyyy-mm-dd". Se nada informado, o padrao
  #         eh 30 dias anteriores a data do sistema.
  # fim: Data final no formato "yyyy-mm-dd". Se nada informado, o padrao eh o dia
  #      anterior a data do sistema.
  # freq: informar "d" para frequencia diaria dos precos ou "m" para mensal. Se
  #       nada informado, o padrao eh diario ("d")
  # 
  # Obs.: Ao final eh plotado um grafico com os valores dos retornos na base 100
  #       com benchmark na data de inicio da serie. A analise consiste em observar
  #       o comportamento do retorno de cada papel do inicio da serie (quando
  #       todos estao com mesmo valor - 100) ate a data final. Serve para comparar
  #       o desempenho de cada papel no periodo informado.
  #################################################################################
  
  LISTA <- toupper(x)
  dados <- list()
  
  for (i in seq_along(LISTA)) {
    dados[[LISTA[i]]] <- get.hist.quote(LISTA[i], start = as.character(inicio),
                                        end = as.character(fim), compression = freq)
  }
  
  for (i in 1:length(LISTA)) {
    dados[[i]] <-
      cbind(
        as.data.table(time(dados[[i]])),
        as.data.table(dados[[i]]))
  }
  
  precos <- 
    dados %>%
    bind_rows(.id = "codigo") %>% rename(data = V1) %>%
    group_by(codigo) %>%
    mutate(closeb100 = Close/ first(Close) * 100) %>% na.omit %>%
    setDT

  assign(nome, precos, envir = .GlobalEnv)

  precos %>%
    mutate(label = if_else(data == max(data), as.character(codigo), NA_character_)) %>%
    ggplot(aes(x = data, y = closeb100, group = codigo, colour = codigo)) +
    geom_line() + theme(legend.position = "none") +
    geom_label_repel(aes(label = label), nudge_x = 1, na.rm = T)
    
}

cntdd.variosMatrix <- function(Arquivo, SeqVarPlan, index = c("cod", "trim"), clsPer = "text", clsVlr = "numeric"){
  
  ################ Instruções #####################################################
  # Objetivo: Criar vetores com base em abas do excel coletadas no economatica por
  #           meio de matrix.
  # Apos salvar cada variavel de interesse em uma aba do excel no formato
  # matrix do economatica, aplica essa funcao, conforme exemplo:
  # 
  #     cntdd.variosMatrix(Arquivo = "Caminho/Arquivo.xlsx",
  #                        SeqVarPlan = c("atvTot", "patLiq"),
  #                        index = c("cod", "ano"),
  #                        clsPer = "numeric", clsVlr = "numeric")
  #
  # Arquivo: Informe o caminho do arquivo com sua extensão xlsx
  # SeqVarPlan: Crie um vetor com o nome de cada variavel coletada na sequencia
  #             das abas do arquivo em excel 
  # index: Informar sempre cod e, no período, colocar conforme a frequencia
  #        coletada (ano, trimestre, mes, data). Serve para nomear as colunas,
  #        portanto, outros valores tambem sao aceitos
  # clsPer: Informa a classe do período. Quando Data e mês, informa "date";
  #         Quando ano, informa "numeric" e quando trimestre, informa "text".
  # clsVlr: O padrao eh numerico, porem se for coletado algum dado com texto,
  #         como o nome do acionista, coloca "text".
  #         
  # Obs.: Ao final eh demonstrada uma auditoria identificando o nome dado pelo
  #       usuario para cada variavel e o cabecalho da planilha com o nome da
  #       variavel coletada no economatica. Serve para saber se a sequencia dada
  #       pelo usuario realmente reflete a sequencia das abas da planilha
  #
  # A função 'cntdd.uneMatrix' une todos os vetores criados por essa funcao.
  # Entao se usar essa funcao, o usuario tera cada variavel da planilha em um
  # vetor separado. Caso queira todas as variaveis em formato painel, eh
  # preferivel usar a funcao 'cntdd.uneMatrix.
  #################################################################################
  
  # Unir diversas variaveis coletadas em matrix (economatica) para o
  # formato painel  

  bds <<- list()
  listaVar <<- toupper(paste0("BD", SeqVarPlan))
  AuditaVetores <- data.frame(Variavel = NA, Descricao = NA)
  
  for (i in seq_along(SeqVarPlan)) {
    
    bds[[SeqVarPlan[i]]] <<- cntdd.BaixaDados(SeqVarPlan[i], Arquivo, index[2], i, ClassPeriodo = clsPer, ClassValue = clsVlr)
    
    AuditaVetores[i,1] = toupper(paste0("BD", SeqVarPlan))[i]; AuditaVetores[i, 2] = names(setDT(read_xlsx(Arquivo, sheet = i, skip = 0, na = "-", range = "B1:B3")))
    
  }
  bds <<- lapply(bds, data.frame)
  print(AuditaVetores)
  
}


cntdd.limpaMatrix <- function(){
  
  ################ Instruções #####################################################
  # Objetivo: Limpar objetos temporarios criados durante a uniao de matrix por
  #           meio da funcao 'cntdd.uneMatrix'. Eh executado automaticamente.
  #################################################################################
  
  rm(list = ls(envir = .GlobalEnv)[ls(envir = .GlobalEnv) %in% c(listaVar, "listaVar", "bds")],
     envir = .GlobalEnv)
}

cntdd.uneMatrix <- function(Arquivo, SeqVarPlan, index, clsPer, clsVlr){
  
  ################ Instruções #####################################################
  # Objetivo: Transformar em painel variaveis coletadas em matrix (Economatica)
  # Apos salvar cada variavel de interesse em uma aba do excel no formato
  # matrix do economatica, aplica essa funcao, conforme exemplo:
  # 
  #     cntdd.uneMatrix(Arquivo = "Caminho/Arquivo.xlsx",
  #                     SeqVarPlan = c("atvTot", "patLiq"),
  #                     index = c("cod", "ano"),
  #                     clsPer = "numeric", clsVlr = "numeric")
  #
  # Arquivo: Informe o caminho do arquivo com sua extensão xlsx
  # SeqVarPlan: Crie um vetor com o nome de cada variavel coletada na sequencia
  #             das abas do arquivo em excel 
  # index: Informar sempre cod e, no período, colocar conforme a frequencia
  #        coletada (ano, trimestre, mes, data). Serve para nomear as colunas,
  #        portanto, outros valores tambem sao aceitos
  # clsPer: Informa a classe do período. Quando Data e mês, informa "date";
  #         Quando ano, informa "numeric" e quando trimestre, informa "text".
  # clsVlr: O padrao eh numerico, porem se for coletado algum dado com texto,
  #         como o nome do acionista, coloca "text".
  #         
  # Obs.: Ao final eh demonstrada uma auditoria identificando o nome dado pelo
  #       usuario para cada variavel e o cabecalho da planilha com o nome da
  #       variavel coletada no economatica. Serve para saber se a sequencia dada
  #       pelo usuario realmente reflete a sequencia das abas da planilha
  #################################################################################
  
  cntdd.variosMatrix(Arquivo = Arquivo, SeqVarPlan = SeqVarPlan, index = index, clsPer = clsPer, clsVlr = clsVlr)
  
  bds <<- lapply(bds, data.frame)
  bdPainel <<- Reduce(inner_join, bds)
  
  cntdd.limpaMatrix()
  
  cat("Os dados foram armazenados, em painel, no objeto 'bdPainel' ", "\n")
  
}

cntdd.theme <- theme(legend.position = "bottom", legend.title = element_blank(),
                     axis.title.x = element_blank(), axis.title.y = element_blank(),
                     axis.text.y = element_text(color = "snow4"),
                     axis.text.x = element_text(color = "snow4"),
                     plot.title = element_text(color = 'lightblue3', size = 15),
                     plot.subtitle = element_text(color = "snow4", size = 10),
                     plot.caption = element_text(color = "snow3", size = 8),
                     panel.background = element_blank(),
                     panel.grid = element_line(color = "snow2"))

mes.nome <- c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho",
              "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")

meses <- data.frame(mes.num = 1:12,
                    mes.nome = mes.nome,
                    mes.abb = substr(mes.nome, 1, 3),
                    month.name = month.name,
                    month.abb = month.abb,
                    mes.chr = c("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"),
                    bim  = rep(1:6, each = 2),
                    trim = rep(1:4, each = 3),
                    quad = rep(1:3, each = 4),
                    sem  = rep(1:2, each = 6))
  
rm(mes.nome)
<file_sep>/R/contabilidados.R
#' Pacote CONTABILIDADOS
#'
#' Pacote voltado a disseminacao de funcoes criadas pela equipe CONTABILIDADOS com
#' o intuito de facilitar coleta, tratamento e estimacao de dados para pesquisas
#' academicas em contabilidade, economia e administracao.
#'
#' @docType package
#'
#' @import data.table
#' @import dplyr
#' @import readxl
#'
#' @author <NAME> \email{<EMAIL>}
#'
#' @name contabilidados
NULL
<file_sep>/verh5.R
verH5 <- function(search){

  journal <- sub("&", "%26", search) # Ajusta o & comercial para o codigo real
  journal <- sub("@", "%40", journal) # Ajusta o @ arroba para o codigo real
  journal <- sub(" *\\(.*", "", journal) # não inclui a partir de qualquer parentese
  journal <- sub("\\.", "", journal) # retirar pontos
  journal <- sub(":", "", journal) # retirar dois pontos
  journal <- dQuote(str_replace_all(journal, " ", "+")) # coloca sempre entre aspas

  #Specifying the url for desired website to be scrapped
  url <- paste0("https://scholar.google.com/citations?hl=pt-BR&view_op=search_venues&vq=", journal, "&btnG=")

  #Reading the html content from Scholar
  webpage <- read_html(url)

  #scrape title of the product
  title_html <- html_nodes(webpage, "table#gsc_mvt_table")
  title <- html_table(title_html)
  df <- Reduce(merge, title)
  df <- df[, 2:4]
  return(df)
}
