R/get_te_data.R

Defines functions get_te_data scrape_te_indicators search_te_indicator

Documented in get_te_data

#' show economic indicators from tradingeconomics.com
#' @author lgm
#' @param indicator use `search_te_indicator()` to search the relative indicators. Several important indicators are: gdp, gdp-per-capita,money-supply-m2,interbank-rate
#' @param showall a switch whether to show all indicators from the website or not
#' @return df data
#' @export
#' @examples
#' search_te_indicator('gdp')
#' #[1] "government-debt-to-gdp" "households-debt-to-gdp" "private-debt-to-gdp"    "gdp"
#' #[5] "gdp-annual-growth-rate" "gdp-growth-rate"        "gdp-per-capita"         "gdp-per-capita-ppp"
#' #[9] "gdp-constant-prices"    "gdp-deflator"           "current-account-to-gdp"
#'
#' get_te_data('gdp')
#'
#'

get_te_data <- function(indicator='gdp-per-capita'){
	suppressWarnings(suppressPackageStartupMessages({
		#library(stringr)
		#library(tidyverse)
		library(magrittr)
		library(purrr)
		library(rvest)
	}))

	link <- paste0("https://zh.tradingeconomics.com/country-list/",indicator)

	link %>%
		read_html %>%
		html_nodes('table.table.table-hover') %>%
		html_table() %>%
		.[[1]] -> dat

	head(dat)
	names(dat) <- c('countries','value','previous','highest','lowest','unit','frequency')
  return(dat)
}

# get all indicators from tradingeconomics.com and save it to data dir
# only run one time
scrape_te_indicators <- function(){
	u <- 'https://tradingeconomics.com/indicators'

	tradingeconIndicator <- u %>%
		read_html() %>%
		html_nodes('div.container > table a') %>%
		html_attr('href') %>%
		map(~gsub("/country-list/","",.x)) %>%
		map(~gsub('/',"",.x)) %>%
		unlist()

	save(tradingeconIndicator,file='data/tradingeconIndicator.rda')

	return(tradingeconIndicator)

}

# search indicators name for get data

#' @export
search_te_indicator <- function(index_name,showall=FALSE){
	library(magrittr)
	data(tradingeconIndicator)
	if (showall==TRUE) {
		res <- tradingeconIndicator
	} else {
		res <- tradingeconIndicator %>%
			.[grepl(index_name,.,ignore.case = TRUE)]
	}

	return(res)
}
Gabegit/gmdata documentation built on May 6, 2019, 5:32 p.m.