R/df_prices.R

Defines functions df_prices

Documented in df_prices

#' Prices Dataframe function
#'
#' Create dataframe of close prices from multiple .csv files downloaded from https://stooq.pl/ with function stooq_download()
#' @param files Vector of .csv file names
#' @param start_date Format 'yyyymmdd'. Default set to 20000101
#' @param end_date Format 'yyyymmdd'. Default set to 20211231
#' @param source Source folder of .csv files. Deafault is your current working directory
#'
#' @return Data frame of asset prices
#' @export
#'
#' @examples
#' files <- list.files('datasets\\')
#' close_prices <- df_prices(files = files
#'                           ,source = 'datasets\\')

df_prices <- function(files
                      ,start_date = 20000101
                      ,end_date = 20211231
                      ,source){

  file_format <- stringr::str_sub(files, -4, -1)
  if(sum(file_format != '.csv') > 0){
    stop('not all files are in .csv format')
  }

  results <- data.frame(Date = seq(lubridate::ymd(start_date)
                                   ,lubridate::ymd(end_date)
                                   ,by = 1))

  for (i in 1:length(files)) {

    file <- files[i]

    if (missing(source)){
      temp <- read.csv(file
                       ,stringsAsFactors = FALSE)
    } else{
      temp <- read.csv(paste0(source
                              ,file)
                       ,stringsAsFactors = FALSE)
    }

    if ('Data' %in% colnames(temp)){
      temp$Data <- as.Date(temp$Data)
    }

    if ('Zamkniecie' %in% colnames(temp)){
      results <- dplyr::full_join(results
                                  ,dplyr::select(temp
                                                 ,Data
                                                 ,Zamkniecie)
                                  ,by = c('Date' = 'Data'))

    }

    colnames(results)[i+1] <- toupper(
      stringr::str_split(files[i], '.csv')[[1]][1]
    )

  }

  results <- na.omit(results)
  return(results)

}
pawel-wieczynski/PolishStock documentation built on March 23, 2022, 3:32 p.m.