Iterative proportional fitting to scale seed values to multiple target subtotals.

ip_fit_sl(datatable, targets, assumptions, datatable.value.name = "value",
target.value.names = "value", assumption.value.names = c("value",
"value_min", "value_max"), assumption.drop.names = c("Notes"),
max.error = 0.01, max.iterations = 25, minmax.smash.param = 1/3,
save.tars = FALSE, show.messages = TRUE)

## Arguments

datatable A data frame of values to be scaled to targets. A list of data frames containing subtotal targets for the datatable. All totals in each target should be equal. A single data frame containing data belonging to freeze_cells, freeze_slice, minmax_cells, and minmax_slice. The names of the series in targets containing subtotals to scale. Can be string or array of strings. The names of the series in assumptions containing subtotals to scale. Three item array of the freeze value name, min value, max value. The names of the series in assumptions to exclude from analysis. Usually columns containing notes. The maximum total absolute difference allowed between final scaled values and targets. Iterative scaling will complete once the error is below this threshold or max.iterations occur. The maximum number of iterations of scaling. Iterative scaling with end once this value is reached, even if the error is above max.error. Numeric value of 0 < x < 1. Following an out-of-bounds occurence for minmax_cells, the minmax.smash.param is the additional value added to the scaled value to bring it back into bounds. Values close to 0 bind the value to the violated bound, while close to 1 bind the value to the other bound. Values closer to 0 will require more iterations to complete. The name of the series in datatable containing the values to be scaled.

## Value

A dataframe with the same dimensionality as datatable, with all values scaled to the subtotals specified in each data frame in targets and meeting criteria supplied in assumptions.