################################################################################
#
#'
#' Calculate z-scores for WHZ, HAZ, WAZ using the WHO Growth Reference (2006)
#' for a single child data.
#'
#' @param data Data frame containing corresponding data on `sex`, `weight`,
#' `height`, and `age` of children. Default is NULL. If specified,
#' parameters for `sex`, `weight`, `height` and `age` should be provided as
#' character values of the names of variables in `data` corresponding to
#' the parameters required.
#' @param sex Either numeric values (1 = male; 2 = female) indicating sex of
#' child (default) or character value (if `data` is specified) indicating
#' variable name in `data` containing information on sex of child/children
#' (1 = male; 2 = female).
#' @param weight Either numeric values for weight in kg with at least 1 decimal
#' place (default) or character value (if `data` is specified) indicating
#' variable name in `data` containing information on weight of
#' child/children.
#' @param height Either numeric values for height in cm with at least 1 decimal
#' place (default) or character value (if `data` is specified) indicating
#' variable name in `data` containing information on height of
#' child/children.
#' @param age Either numeric values for age in whole months (default) or
#' character value (if `data` is specified) indicating variable name in
#' `data` containing information on age of child/children.
#' @param index One of *"wfh"*, *"hfa"*, *"wfa"* (specifies the required index)
#' or *"all"* to calculate all three indices
#'
#' @return Either a single numeric value for z-score of the anthropometric index
#' selected if data is for single child or a data frame of numeric values
#' for z-scores of each anthropometric index if data is for multiple
#' children and more than one anthropometric index selected.
#'
#' The function fails messily when \code{secondPart} is outside of the range
#' given in the WGS reference (i.e. 45 to 120 cm for height and 0 to 60 months
#' for age). It is up to you to check the ranges of your data.
#'
#' The reference data for W/H assumes supine length is used for children with a
#' standing height below 85cm
#'
#' Heights should be specified in cm to the nearest mm (i.e. to 1 d.p.)
#'
#' Ages should be specified in whole months
#'
#' Weights should be specified in kg to available precision
#'
#' The function requires reference data `wgsData` included in this package
#'
#' @examples
#' # apply getAllWGS to a make believe 52 month old male child with weight of
#' # 14.6 kg and height of 98.0 cm
#' waz <- getAllWGS(sex = 1, # 1 = Male / 2 = Female
#' weight = 14.6, # Weight in kilograms
#' height = 98, # Height in centimetres
#' age = 52, # Age in whole months
#' index = "wfa") # Anthropometric index (weight-for-age)
#' waz
#'
#' haz <- getAllWGS(sex = 1,
#' weight = 14.6,
#' height = 98, # Height in centimetres
#' age = 52,
#' index = "hfa") # Anthropometric index (height-for-age)
#' haz
#'
#' whz <- getAllWGS(sex = 1,
#' weight = 14.6,
#' height = 98,
#' age = 52,
#' index = "wfh") # Anthropometric index (weight-for-height)
#' whz
#'
#' # apply getAllWGS to anthro1 dataset
#' waz <- getAllWGS(data = anthro1,
#' sex = "sex",
#' weight = "weight",
#' height = "height",
#' age = "age",
#' index = "wfa")
#' waz
#'
#' haz <- getAllWGS(sex = anthro1$sex,
#' weight = anthro1$weight,
#' height = anthro1$height,
#' age = anthro1$age,
#' index = "hfa")
#' haz
#'
#' all <- getAllWGS(data = anthro1,
#' sex = "sex",
#' weight = "weight",
#' height = "height",
#' age = "age",
#' index = "all")
#' all
#'
#' @export
#'
#
################################################################################
getAllWGS <- function(data = NULL, sex, weight, height, age, index) {
## Deprecate
.Deprecated(new = "addWGSR",
package = "zscorer",
msg = paste(
strwrap(
"The getAllWGS function is now under deprecation. Please
use addWGSR instead",
width = 80
),
collapse = "\n"
),
old = "getAllWGS")
## If user selects index of "wfa" or "all"...
if(index == "wfa" | index == "all"){
## If user does not provide data (is.null(data))...
if(is.null(data)){
## If user provides non-numeric arguments for parameters...
if(!is.numeric(weight) | !is.numeric(sex) | !is.numeric(age)){
## Stop operation
stop(
paste(
strwrap(
"If data provided, sex, weight and age must be numeric.
Try again.",
width = 80
),
collapse = "\n"
),
call. = TRUE
)
}
##
waz <- mapply(FUN = getWGS,
sexObserved = sex,
firstPart = weight,
secondPart = age,
index = "wfa")
}
## If !is.null(data)...
if(!is.null(data)){
## If user provides non-character arguments for parameters...
if(!is.character(sex) | !is.character(weight) | !is.character(age)){
## Stop operation
stop(
paste(
strwrap(
"If data not provided, sex, weight and age must be character
values. Try again",
width = 80
),
collapse = "\n"
),
call. = TRUE
)
}
##
waz <- mapply(FUN = getWGS,
sexObserved = data [, sex],
firstPart = data[ , weight],
secondPart = data[ , age],
index = "wfa")
}
}
## If user selects index of haz or all...
if(index == "hfa" | index == "all"){
## If user does not provide data (is.null(data))...
if(is.null(data)){
## If user provides non-numeric arguments for parameters...
if(!is.numeric(sex) | !is.numeric(height) | !is.numeric(age)){
## Stop operation
stop(
paste(
strwrap(
"If data provided, sex, height and age must be numeric.
Try again.",
width = 80,
),
collapse = "\n"
),
call. = TRUE
)
}
##
haz <- mapply(FUN = getWGS,
sexObserved = sex,
firstPart = height,
secondPart = age,
index = "hfa")
}
##
if(!is.null(data)){
##
if(!is.character(sex) | !is.character(height) | !is.character(age)){
##
stop(
paste(
strwrap(
"If data not provided, sex, height and age must be character
values. Try again.",
width = 80
),
collapse = "\n"
),
call. = TRUE
)
}
##
haz <- mapply(FUN = getWGS,
sexObserved = data[ , sex],
firstPart = data[ , height],
secondPart = data[ , age],
index = "hfa")
}
}
## If user selects index of "whz" or "all"...
if(index == "wfh" | index == "all"){
##
if(is.null(data)){
##
if(!is.numeric(sex) | !is.numeric(weight) | !is.numeric(height)){
##
stop(
paste(
strwrap(
"If data provided, sex, weight and height must be numeric.
Try again.",
width = 80,
),
collapse = "\n"
),
call. = TRUE
)
}
##
whz <- mapply(FUN = getWGS,
sexObserved = sex,
firstPart = weight,
secondPart = height,
index = "wfh")
}
##
if(!is.null(data)){
##
if(!is.character(sex) | !is.character(weight) | !is.character(height)){
##
stop(
paste(
strwrap(
"If data not provided, sex, weight and height must be character
values. Try again.",
width = 80,
),
collapse = "\n"
),
call. = TRUE
)
}
##
whz <- mapply(FUN = getWGS,
sexObserved = data[ , sex],
firstPart = data[ , weight],
secondPart = data[ , height],
index = "wfh")
}
}
##
if(index == "wfa") { z <- data.frame(waz) }
if(index == "hfa") { z <- data.frame(haz) }
if(index == "wfh") { z <- data.frame(whz) }
if(index == "all") {
z <- data.frame(cbind(waz, haz, whz))
names(z) <- c("waz", "haz", "whz")
}
return(z)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.