In market sizing and forecasting, we’re often tasked with estimating large data tables with limited, high-level inputs. Iterative proportion fitting has been used in market analysis for over 30 years. This package integrates the methodology, along with some more sophisticated methods, into the tidyverse in R.

The ipfitr package for R allows the user to input multiple high-level summary/aggregate data tables and create a single, full-dimension data table estimating individual cell values using iterative proportion fitting (IPFs).

The user can also submit must-hit target values or min/max conditions for individual cells or specific slices of the data table.

Here’s the link to a webpage with a demo of key features. See my GitHub for the script and latest updates.

Getting Started

The ipfitr package performs iterative proportion fitting on a seed datatable, continuously scaling values to each target until the seed values sum to every supplied target. If no seed is supplied, the function begins with a seed of 1 for every value.

Changing the seed will result in different final results (see Examples 1a and 2 in the demo). For this reason, it’s best to include as much information as you can about the relative values of the cells in the seed.


This package is built using the tidyverse packages.

The functions in ipfitr can be run independently, but are more useful as part of a %>% workflow.


devtools::install_github("ryantimpe", "ipfitr")


The Windows batch file RunDatasaur.bat is two lines telling Windows to run the R script using R 3.4. In future releases, this will be moved to AWS.

Built With


For the versions available, see the tags on this repository.


See also the list of contributors who participated in this project.


No license.