#' @import fst
setOldClass("fst_table")
#' LoanAcquisitionDataset
#'
#' A \code{\link[fst]{fst}} dataset containing loan attributes available at origination
#'
#' @family Loan Level Datasets
#' @name LoanAcquisitionDataset-class
#' @slot path path to the \code{\link[fst]{fst}} file.
#' @slot file_txt path of the original text data file
#'
#' @import methods
#' @importFrom fst fst
#' @exportClass LoanAcquisitionDataset
#' @export
#'
setClass("LoanAcquisitionDataset", contains = "fst_table", slots =
list(path="character", file_txt="character"))
#' LoanAcquisitionDataset constructor
#'
#' LoanAcquisitionDataset can be constructed either by parsing a data file acq_txt
#' or else by loading a dataset for the specified Origination year OrigYr. If both arguments
#' are missing, the complete data file for all loans in all vintages is loaded.
#' @param OrigYr integer Loans Origination Year from 1999 to 2019.
#' @param acq_txt character path to data file
#'
#' @return A LoanAcquisitionDataset object
#' @importFrom fst fst write_fst
#' @export
#'
#' @examples
#' \dontrun{
#' LoanAcquisitionDataset(OrigYr=2019)
#' }
LoanAcquisitionDataset <- function(OrigYr, acq_txt) {
# browser()
if(missing(acq_txt)) {
if(missing(OrigYr)) {
Data_A_fst <- file.path(fn_llp_workdir, sprintf("Data_A.fst"))
} else {
OrigYr <- as.integer(OrigYr)
stopifnot(OrigYr %in% seq.int(1999,2019))
Data_A_fst <- file.path(fn_llp_workdir, sprintf("Data_A_%d.fst", OrigYr))
}
stopifnot(file.exists(Data_A_fst))
return(new("LoanAcquisitionDataset", fst(Data_A_fst), path=Data_A_fst))
} else {
Data_A <- process_A(acq_txt)
Data_A_fst <-tempfile("Data_A_", fileext = ".fst")
write_fst(Data_A, Data_A_fst)
return(new("LoanAcquisitionDataset", fst(Data_A_fst), path=Data_A_fst, file_txt=acq_txt))
}
}
#' show LoanAcquisitionDataset
#'
#' show Loan Acquisitions data set
#'
#' @param object LoanAcquisitionDataset.
#'
#' @export
#'
setMethod("show", signature(object = "LoanAcquisitionDataset"), function(object) {
# str(object, list.len=999)
# print(asS3(object))
# print(metadata_fst(object@path ))
# print(summary(object))
callNextMethod()
})
#' @importFrom fst read_fst
setMethod("subset", signature(x = "LoanAcquisitionDataset"), function(x, subset=NULL, select=NULL, drop=FALSE, ...) {
Data_A <- read_fst(x@path, columns = select, as.data.table = TRUE)
i <- eval(subset, envir = Data_A)
Data_A <- subset(Data_A, subset=i)
return(Data_A)
})
#' aggregate LoanAcquisitionDataset.
#'
#' @param x LoanAcquisitionDataset.
#' @param xvar Timeseries variable
#' @param by.vars facets
#' @param ... not used
#'
#' @return a data.table
#' @export
#'
#' @examples
#' \dontrun{
#' LA <- LoanAcquisitionDataset()
#' aggregate(LA)
#' }
setMethod("aggregate", signature(x = "LoanAcquisitionDataset"),
function(x, xvar=NULL, by.vars=NULL, ...) {
cols <- c('ORIG_AMT','ORIG_RT','ORIG_DTE', 'CSCORE_B','CSCORE_C','OLTV','OCLTV','DTI','PURPOSE','OCC_STAT','MI_PCT','ORIG_CHN')
Data_A <- read_fst(x@path, columns = cols, from = 1, to = NULL, as.data.table = TRUE)
# str(Data_A)
# browser()
aggregate.Data_A(Data_A, xvar, by.vars)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.