Having problems with your files? Click here.

About the R Shiny applications

R is a comprehensive, open-source statistical programming environment available from the Comprehensive R Archive Network (CRAN) for Mac, Windows, and Linux. According to a recent editorial in the Journal of Statistical Software,

authors of research articles in scientific journals now appear to overwhelmingly employ R for executing and displaying published statistical results.

Attesting to the importance of R in studies of pediatric growth, the World Health Organization (WHO) used R GAMLSS to fit their standard (0–5 years, 2006) and reference (5–19 years, 2007) growth charts using the Lambda–Mu–Sigma (LMS) model; they currently offer R macros for calculating a variety of anthropometric Z scores based on these charts.

To better support our membership, we have developed a comprehensive suite of Shiny tools for monitoring growth in both a clinical and research context, with both Z-score calculators (Zapps™) and growth chart plotters. For best performance, we recommend an HTML5-compliant browser (e.g. Chrome, Edge, Safari, or Firefox). For the most part, our computational algorithms and LMS tables were provided by the original developers with one exception: Since the WHO did not provide weight-for-age beyond 10 years, these LMS tables are based on our published re-analysis of WHO/NCHS data.

Most apps are available as both batch calculators (data in spreadsheets) and direct data entry (DDE) formats, where measurements for individual patients are input through the browser (e.g. for mobile or clinic use).

Online software (Zapps™) for batch-calculating growth centiles and Z-scores

There is also an option for those wanting the WHO macros without the bother of a statistical package. We have created an online application running the WHO macros on an R server (aka Shiny).

  • igrowup: a Shiny app for children ages 0–5 years, based on the WHO growth standards
  • who2007: a Shiny app for children ages 5–19 years, based on the WHO growth reference
  • quickZ_WHO: a Shiny app which combines the data from igrowup and who2007 for calculating Z-scores for height, weight and BMI for children from 0–19 years of age, based on the WHO Growth Charts for Canada 2014
  • quickZ_CDC: a Shiny app for calculating Z-scores for height, weight and BMI for children from 0–20 years of age, based on the US CDC Growth Charts
  • WCz: a Shiny for calculating Z-scores for waist circumference and waist/height ratio for children 5–19 years of age, based on NHANES III reference data
  • BPz: Shiny apps for categorizing blood pressure in children ages 1–18 years of age, based on reference data from the American Academy of Pediatrics, 2017:
    • BPz: for analyzing data from spreadsheets
    • BPz_DDE: for analyzing data entered directly into a web browser (mobile version)
  • skinfolds: a Shiny app for skinfold thicknesses, based on data from WHO for children ages 3 months to 5 years and from Addo 2010 and 2017 for children ages 5–20 years
  • preterm: a Shiny app for preterm infants 22–49 weeks, based on data from Fenton, 2013
  • DownZ: a Shiny app for children with Down syndrome aged 0–20 years, based on data from Zemel et al, 2015
  • PWSZ: a Shiny app for children with Prader–Willi syndrome (non–GH-treated) aged 0–18 years, based on data from Butler et al, 2011 and 2015

Some additional BMIz-based metrics (e.g. BMIz_mod, BMIz_ext, etc.) are available at:

On the Shiny server, batch data may be uploaded in the form of a comma-separated variable (.csv) spreadsheet, from Excel or similar (see below for instructions on how to create a .csv file). An Excel calculator is also available for processing batch files (Windows only).

Online software for plotting individual or composite growth data

For those who prefer to create growth charts by uploading anthropometric data in spreadsheet (.csv) format, we have also created Shiny plotters for this purpose:

Or if you prefer to combine direct data entry with the versatility of Shiny:

If you would like to directly enter individual growth data into a browser, please see the CPEG web plotters on our web site.

Common errors in spreadsheet inputs

The apps are fairly bullet-proof, but here are things to watch out for if you're having problems with your spreadsheet inputs:

  1. The column names must be spelled as shown in the sample file. Case matters e.g. “Sex” is not the same as “sex”. Note that “f” is not the same as “ f”, and “O” is not the same as “0”. Looking at your data in a simple text editor (e.g. NotePad in Windows or TextEdit in MacOS) may reveal format details that are concealed by Excel, such as leading or trailing spaces.
  2. If you include non-numeric data in your input, the entire column will be read as text and the application may fail. Common errors include “O” vs “0” or “..” instead of the decimal point (“.”).This also applies to the missing data indicator, where the app will accept either a blank space “ ” (Excel default) or “NA” (R default). It will however report an error if you get creative, as it doesn't know how to interpret “.” or “#NULL!” as missing data markers. As noted above, leading or trailing space can also be a problem: “ NA” is not the same as “NA”. So if you're having problems, please examine your input file in a simple text editor (e.g. NotePad in Windows or TextEdit in MacOS).
  3. In some European system configurations, Microsoft uses a semi-colon (“;”) as their default “list separator”. To check, just open your .csv file in a simple text editor (e.g. NotePad for Windows or TextEdit for Mac). If you see semi-colons, you have found your problem. As a result, when you choose “Save as .csv”, the columns are separated by semi-colons rather than commas, which is confusing, since a .csv file is—by definition—a plain text file with columns separated by commas (csv = “comma-separated variables”). Fortunately, there are options:
    • Open your file in a simple text editor (NotePad, TextEdit) and carry out a Search/Replace operation to replace all semicolons with commas (so the columns are appropriately separated).
    • Re-configure the default list separator to be a comma instead of a semi-colon. Under Windows, go to the Region and Language control panel and find the List Separator setting. It only takes a second and is reversible. For details, click here.
    • For those wishing to use semicolon list separators, we have adding a panel of radio buttons just above the Choose CSV button — to select comma, semicolon, or tab delimiters in files ending with .csv or .txt. Most of you should probably continue to use comma-separated variables, as this format is particularly robust when moving between systems. Be patient, as there are 18 apps, and revision is an error-prone process; or you could send flowers.
  4. Sex can be input as “M”, “m”, “1” (males) vs “F”, “f”, “2” (females). We’ve recently learned that if the column contains only “Fs”, R may read the entire column as logical values, since “F” is the built-in short-cut for FALSE. I should probably eliminate this bug, but the simple work-around is to use “f” or “2” or simply ensure that there is at least one “M” in the column to force proper recognition.
  5. For all apps, the variable “id” is the user-specified row identifier and should be unique for each row in your dataset. In Excel, go to the Data menu, choose Advanced Filter, and select Unique Records Only. The number of rows will shrink with duplicate entries.
  6. For assistance with .csv file creation, you may want to review our brief instruction guide (slide show or PDF format).


If you have questions, comments or suggestions, please contact Dr. Atul Sharma or Dr. Dan Metzger.