##' Function to impute production or yield
##'
##' This is a wrapper of the ensemble imputation for the production domain.
##'
##' @param data The data.table object containing the data.
##' @param imputationParameters A list of the parameters for the imputation
##' algorithms. See defaultImputationParameters() for a starting point.
##'
##' @return This function doesn't return any objects but modifies the underlying
##' data.table that it was passed.
##'
##' @export
##'
##' @import data.table
##'
imputeVariable = function(data, imputationParameters){
### Data Quality Checks
if(!exists("ensuredImputationData") || !ensuredImputationData)
ensureImputationInputs(data = data,
imputationParameters = imputationParameters)
## Define which columns should store the imputation and flags, and create
## those columns if they don't currently exist.
if(imputationParameters$newImputationColumn == ""){
newValueColumn = imputationParameters$imputationValueColumn
newObsFlagColumn = imputationParameters$imputationFlagColumn
newMethodFlagColumn = imputationParameters$imputationMethodColumn
} else {
newValueColumn = paste0("Value_",
imputationParameters$newImputationColumn)
newObsFlagColumn = paste0("flagObservationStatus_",
imputationParameters$newImputationColumn)
newMethodFlagColumn = paste0("flagMethod_",
imputationParameters$newImputationColumn)
}
## NOTE (Michael): We impute variables which has only single
## observation with the only observed
## value. Although not a good practice but
## explaination is offered in issue 8.
imputeSingleObservation(data, imputationParameters)
missingIndex = data[[imputationParameters$imputationFlagColumn]]=="M" &
data[[imputationParameters$imputationMethodColumn]]=="u"
ensemble = ensembleImpute(data = data,
imputationParameters = imputationParameters)
if(!is.null(nrow(ensemble))){
data=cbind(data, ensemble)
data[missingIndex & !is.na(ensemble),
c(newValueColumn) := ensemble]
data=data[,ensemble:=NULL]
}
imputedIndex = missingIndex & !is.na(data[[newValueColumn]])
invisible(data[imputedIndex,
c(newObsFlagColumn, newMethodFlagColumn) :=
list(imputationParameters$imputationFlag,
imputationParameters$newMethodFlag)])
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.