Use mchtoolbox to calculate percentiles and z-scores for a child’s sex and age for BMI, weight, height, and head circumference based on CDC growth charts.


Reference data from nationally representative populations is used in maternal and child health research and public health surveillance to calculate percentiles, z-scores, and related values. This is important for measures that naturally change over the lifespan, such as body mass index and blood pressure. It can be difficult to calculate these variables and incorporate them into a tidy workflow because published code is often not available in the R language (or in any language), or in the same place. The motivation for this project is it create a package that contains functions compatible with the tidyverse to calculate commonly used measures in maternal child health. We are also working on a shiny app for EDA and so that users can easily load a CSV and calculate these measures in the app.

Expected Input

cdc_growth() takes as input a data.frame with the following columns (units):

  • sex: 1=male, 2=female
  • agemos: months
  • height: cm
  • weight: kg
  • headcir: cm (optional)


Install mchtoolbox from Github:


This is a basic example which shows you how to solve a common problem:

Shiny App


Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Project Origin

This project was begun during the 2018 rOpenSci unconference:


A special thank you to:

Future Directions

  • Add all of the calculations in the original CDC SAS macro, including:
    • Flagging for biologically implausible values
    • headcir- and length/height-for-age calculations
    • value-for-length calculations
    • obesity measures (%bmip95)
  • Add functions for:
    • weight-for-gestational age (child)
    • gestational weight gain z score (maternal)
    • blood pressure percentiles (child)

Original Github Issue

Link to original issue from unconf18.