Menu ENN Search
Language: English Français

New version of R package 'zscorer' available

This question was posted the Assessment and Surveillance forum area and has 8 replies.

» Post a reply

Mark Myatt

Consultamt Epidemiologist

Frequent user

5 Nov 2019, 14:55

Ernest and I have been working on the zscorer package for the R Language for Data Analysis and Graphics. v0.3.1 of the zscorer package calculates and adds nutritional anthropometry z-scores to survey data:

  • Weight-for-length (wfl) z-scores for children with lengths between 45 and 110 cm
  • Weight-for-height (wfh) z-scores for children with heights between 65 and 120 cm
  • Length-for-age (lfa) z-scores for children aged less than 24 months
  • Height-for-age (hfa) z-scores for children aged between 24 and 228 months
  • Weight-for-age (wfa) z-scores for children aged between zero and 120 months
  • Body mass index-for-age (bfa) z-scores for children aged between zero and 228 months
  • MUAC-for-age (mfa) z-scores for children aged between 3 and 228 months
  • Triceps skinfold-for-age (tsa) z-scores for children aged between 3 and 60 months
  • Sub-scapular skinfold-for-age (ssa) z-scores for children aged between 3 and 60 months
  • Head circumference-for-age (hca) z-scores for children aged between zero and 60 months

The z-scores are calculated using the WHO Child Growth Standards for children aged between zero and 60 months or the WHO Growth References for school-aged children and adolescents.

New in this version is that MUAC-for-age (mfa) z-scores for children aged between 60 and 228 months are calculated using the new MUAC-for-age growth reference developed by Mramba et al. (2017) using data from the USA and Africa:

Mramba L, Ngari M, Mwangome M, Muchai L, Bauni E, Walker AS, et al. A growth reference for mid upper arm circumference for age among school age children and adolescents, and validation for mortality: growth curve construction and longitudinal cohort study. BMJ. 2017

This reference has been validated with African school-age children and adolescents.

The zscorer comes packaged with the WHO Growth References data and the new MUAC-for-age reference data.

The package contains a Shiny app that provides a web interface to the package's functions. You can see an example of this functionality here.

The package can be downloaded and installed in R in the usual manner. The package website is here.

A manual is inlcuded in the package and is available here.

Carlos Grijalva-Eternod

UCL Institute for Global Health

Normal user

5 Nov 2019, 19:54

This R package is very neat and useful.

Thank you Mark and Ernest.

Ernest Guevarra

Frequent user

5 Nov 2019, 20:15

Thanks for sharing this to the forum Mark!

Mark and I are pleased to be able to share this package along with the accompanying web interface with the forum and to everyone who does nutrition studies and surveys. We think this fills a gap that we noted from some of the questions/issues raised in this thread with regard to tools for z-score calculation.

For those who already use R Language for Data Analysis and Graphics, then installation and usage will be straightforward using the links that Mark shared documenting the functions in the zscorer package.

For those that don't use R or are still in the early stages of learning R, the web interface allows for anyone to perform the calculations using familiar and easy to learn point and click user interface.

This package and the web interface is in active development. Mark and I are happy to receive feedback/comments/issue or bug reports/feature requests either via this EN-NET forum or through our GitHub development portal found here. Mark and I also embrace open source development and as such our codebase is available for anyone to review and give feedback to or build on. This is available, again, through our GitHub development portal.

Anonymous 27728


Normal user

5 Nov 2019, 22:13

Excuse me, for it's not an answer but rather a question: please tell me if you know a way to calculate the target weight and height of a child without using the WHO Zscore table. 

I would like to know whether there is another method to find the target weight of a child  without using the WHO z-score table, because after taking the anthopomteric measurements for a child with W/H -3 we use the WHO table to find the target weight.  My question is to find out whether there is another method of calculating this?  

 Thank you for taking my question into consideration, Tidiani Cisse Student

Sharon Cox

Assoc Professor

Normal user

6 Nov 2019, 01:32

Thanks Ernest and Mark. I agree that this fills a gap. I will be sharing with my students. 

Mutegi Kevin

Normal user

6 Nov 2019, 03:02

Thank you Mark & Ernest

Mbaye Diop

cellule de lutte contre la malnutrition de senegal

Normal user

7 Nov 2019, 13:59


There are expected target weights for 1 month periods as part of growth monitoring and promotion (GMP).

Try to get acquainted with these tables, but they are for children from 0-23 months.

Thank you

Mark Myatt

Consultamt Epidemiologist

Frequent user

7 Nov 2019, 16:16

Dear Anonymous 27728 / Étudiant / Tidiani Cisse,

I am not sure that I understand your question. I guess that you have a SAM case with WHZ < -3 and you want to work out what weight for the same height would give WHZ >= 2 and this becomes a "target weight". Is that correct?

If so then it should be quite easy to write an short R script which uses the functions and reference data in the zscorer package to do the calculations You could wrap that script up with Shiny so you could do the calculations in your web-browser.

The mechanics of the R script will be something like this:

    ## Load zscorer library

    ## Sex, weight, and height for a SAM case
    sex = 1
    height = 91
    weight = 9.9

    ## Calculate WHZ for this case
    getWGSR(sex = sex, firstPart = weight, secondPart = height, index = "wfh")

This gives:

     [1] -3.633671

This is the WHZ for the specified case (i.e. sex = 1 (for male), height = 91, and weight = 9.9).

We now need to calculate what weight for the current height gives WHZ = 2

    ## Specify the objective function
    objFun <- function(weight)
      result <- getWGSR(sex = sex, firstPart = weight,
                        secondPart = height, index = "wfh") + 1.99

    ## Find the weight that gives an answer closest to zero
    uniroot(objFun, interval = c(weight, 25))$root

This gives:

    [1] 11.23279

This is the target weight

We can check the result with the original height and the target weight:

    getWGSR(sex = 1, firstPart = 11.23279, secondPart = 91, index = "wfh")

This gives:

    [1] -1.990001

which, as we wanted it just above WHZ = -2.

This process assumes that no height is gained during treatment. This may not always be the case as children tend to grow quickly when their nutritional needs are met.

A simple alternative ... UNICEF guidelines have a 15% weight gain as a target. For the example child this would be:

    9.9 * 1.15 = 11.385

We can check what that gives:

     getWGSR(sex = 1, firstPart = 11.385, secondPart = 91, index = "wfh")
This gives:

    [1] -1.813269

which is also a bit above WHZ < -2 giving some room for a little gain in height.

The 15% proportional weight gain apporach is simple to apply with a table or using a cheap and simple pocket calculator.

BTW ... The GMP target weight tables are for normal growth in weight and we expect / want accelerated growth in therapeutic feeding.

I hope this is useful.

Martin Njoroge


Normal user

13 Nov 2019, 08:57

Thanks Mark & Ernest. Quite informative and helpful.

If you have any problem posting a response, please contact the moderator at

Back to top

» Post a reply