diff --git a/NEWS.md b/NEWS.md
index 9c6f945d..c99c853c 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,11 @@
# growthcleanr
+## [1.2.4] - 2021-01-14
+
+### Changed
+
+- Minor update to WHO HT velocity 3SD files (#24)
+
## [1.2.3] - 2021-01-07
### Added
diff --git a/README.md b/README.md
index 170b6ca5..2aade5c0 100644
--- a/README.md
+++ b/README.md
@@ -45,18 +45,19 @@ packages is required, as is a growth measurement dataset prepared for use in
The rest of this documentation includes:
-* [Quickstart](#quickstart) - a brief tour of using growthcleanr, including data
+- [Quickstart](#quickstart) - a brief tour of using growthcleanr, including data
preparation
-* [Installation](#installation) - including required dependencies and
+- [Installation](#installation) - including required dependencies and
OS-specific notes
-* [Usage](#usage) - examples of cleaning data, multiple options, example data
-* [Configuration options](#configuration) - changing growthcleanr operational
+- [Usage](#usage) - examples of cleaning data, multiple options, example data
+- [Configuration options](#configuration) - changing growthcleanr operational
settings
-* [Understanding output](#output) - the exclusion types growthcleanr identifies
-* [Working with large datasets](#largedata) - notes and suggestions
-* [Computing BMI percentiles and Z-scores](#bmi) - additional functions for
+- [Understanding output](#output) - the exclusion types growthcleanr identifies
+- [Working with large datasets](#largedata) - notes and suggestions
+- [Computing BMI percentiles and Z-scores](#bmi) - additional functions for
determining percentiles and Z-scores using the CDC method
-* [Related tools](#related) - additional software complementary to growthcleanr
+- [Related tools](#related) - additional software complementary to growthcleanr
+- [Changes](#changes) - notes about algorithm or package changes
## Quickstart
@@ -65,16 +66,16 @@ The rest of this documentation includes:
The `growthcleanr` package must be installed, which will in turn install the
following packages:
-* `data.table`
-* `foreach`
-* `doParallel`
-* `parallel`
-* `dplyr`
-* `Hmisc`
-* `labelled`
-* `plyr`
-* `tidyr`
-* `magrittr`
+- `data.table`
+- `foreach`
+- `doParallel`
+- `parallel`
+- `dplyr`
+- `Hmisc`
+- `labelled`
+- `plyr`
+- `tidyr`
+- `magrittr`
In addition, an R environment with `devtools` installed is also required.
Further installation details and notes can be found under
@@ -95,8 +96,8 @@ data vectors needed are:
30.4375 days in one month; see also the additional
[notes on calculating `agemos`](https://www.cdc.gov/nccdphp/dnpao/growthcharts/resources/sas.htm)
from whole numbers of months
-3. `sex` - a numeric value of `0` (male) or `1` (female)
-4. `measurement` - numeric value of measurement in cm for height or kg for
+4. `sex` - a numeric value of `0` (male) or `1` (female)
+5. `measurement` - numeric value of measurement in cm for height or kg for
weight
**Note**: the dataset should be sorted by `subjid`, `param`, and `agedays`, as
@@ -106,21 +107,21 @@ demonstrated in the Example below.
Starting with a dataset such as the following:
-| subjid | param | agedays | sex | measurement |
-| - | - | - | - | - |
-| 1 | HEIGHTCM | 2790 | 0 | 118.5 |
-| 1 | HEIGHTCM | 3677 | 0 | 148.22 |
-| 1 | WEIGHTKG | 2790 | 0 | 23.8 |
-| 1 | WEIGHTKG | 3677 | 0 | 38.41 |
-| 2 | HEIGHTCM | 2112 | 1 | 118.2 |
-| 2 | HEIGHTCM | 2410 | 1 | 123.9 |
-| 2 | HEIGHTCM | 2708 | 1 | 128.03 |
-| 2 | HEIGHTCM | 3029 | 1 | 135.3 |
-| 2 | WEIGHTKG | 2112 | 1 | 25.84 |
-| 2 | WEIGHTKG | 2410 | 1 | 28.61 |
-| 2 | WEIGHTKG | 2708 | 1 | 28.61 |
-| 2 | WEIGHTKG | 3029 | 1 | 34.5 |
-| ... | ... | ... | ... | ... |
+| subjid | param | agedays | sex | measurement |
+| ------ | -------- | ------- | --- | ----------- |
+| 1 | HEIGHTCM | 2790 | 0 | 118.5 |
+| 1 | HEIGHTCM | 3677 | 0 | 148.22 |
+| 1 | WEIGHTKG | 2790 | 0 | 23.8 |
+| 1 | WEIGHTKG | 3677 | 0 | 38.41 |
+| 2 | HEIGHTCM | 2112 | 1 | 118.2 |
+| 2 | HEIGHTCM | 2410 | 1 | 123.9 |
+| 2 | HEIGHTCM | 2708 | 1 | 128.03 |
+| 2 | HEIGHTCM | 3029 | 1 | 135.3 |
+| 2 | WEIGHTKG | 2112 | 1 | 25.84 |
+| 2 | WEIGHTKG | 2410 | 1 | 28.61 |
+| 2 | WEIGHTKG | 2708 | 1 | 28.61 |
+| 2 | WEIGHTKG | 3029 | 1 | 34.5 |
+| ... | ... | ... | ... | ... |
Note that in this Example, we see data from two subjects, sorted as described
above, with two pairs of height/weight measurements for the first patient and
@@ -134,9 +135,9 @@ identify.
The `cleangrowth()` function provided by `growthcleanr` will return a vector
that specifies, for each measurement, whether to:
-* "`Include`" the measurement,
-* Conclude that the measurement is "`Missing`",
-* Or to "`Exclude`" the measurement (numerous variations of `Exclude` exist, as
+- "`Include`" the measurement,
+- Conclude that the measurement is "`Missing`",
+- Or to "`Exclude`" the measurement (numerous variations of `Exclude` exist, as
specified below in Understanding output).
For a data.frame object `source_data` containing growth data:
@@ -160,21 +161,21 @@ only_included_data <- cleaned_data[clean_value=='Include']
If our Example dataset above were named `source_data`, examining `cleaned_data`
would show:
-| subjid | param | agedays | sex | measurement | clean_value |
-| - | - | - | - | - | - |
-| 1 | HEIGHTCM | 2790 | 0 | 118.5 | Include |
-| 1 | HEIGHTCM | 3677 | 0 | 148.22 | Include |
-| 1 | WEIGHTKG | 2790 | 0 | 23.8 | Include |
-| 1 | WEIGHTKG | 3677 | 0 | 38.41 | Include |
-| 2 | HEIGHTCM | 2112 | 1 | 118.2 | Include |
-| 2 | HEIGHTCM | 2410 | 1 | 123.9 | Include |
-| 2 | HEIGHTCM | 2708 | 1 | 128.03 | Include |
-| 2 | HEIGHTCM | 3029 | 1 | 135.3 | Include |
-| 2 | WEIGHTKG | 2112 | 1 | 25.84 | Include |
-| 2 | WEIGHTKG | 2410 | 1 | 28.61 | Include |
-| 2 | WEIGHTKG | 2708 | 1 | 28.61 | Exclude-Carried-Forward |
-| 2 | WEIGHTKG | 3029 | 1 | 34.5 | Include |
-| ... | ... | ... | ... | ... | ... |
+| subjid | param | agedays | sex | measurement | clean_value |
+| ------ | -------- | ------- | --- | ----------- | ----------------------- |
+| 1 | HEIGHTCM | 2790 | 0 | 118.5 | Include |
+| 1 | HEIGHTCM | 3677 | 0 | 148.22 | Include |
+| 1 | WEIGHTKG | 2790 | 0 | 23.8 | Include |
+| 1 | WEIGHTKG | 3677 | 0 | 38.41 | Include |
+| 2 | HEIGHTCM | 2112 | 1 | 118.2 | Include |
+| 2 | HEIGHTCM | 2410 | 1 | 123.9 | Include |
+| 2 | HEIGHTCM | 2708 | 1 | 128.03 | Include |
+| 2 | HEIGHTCM | 3029 | 1 | 135.3 | Include |
+| 2 | WEIGHTKG | 2112 | 1 | 25.84 | Include |
+| 2 | WEIGHTKG | 2410 | 1 | 28.61 | Include |
+| 2 | WEIGHTKG | 2708 | 1 | 28.61 | Exclude-Carried-Forward |
+| 2 | WEIGHTKG | 3029 | 1 | 34.5 | Include |
+| ... | ... | ... | ... | ... | ... |
In this sample output, we see that `growthcleanr` has indeed flagged the third
weight measurement for `subjid 2` as an apparent carried forward value. The
@@ -424,17 +425,17 @@ cleaned_data <- data[, clean_value_both:=
)]
```
- * `lt3.exclude.mode = "flag.both"` will exclude both measurements for a
- subject if they only have two unexcluded measurements of one parameter type
- with at least one implausible value and no same age-day measurements of the
- other parameter.
+- `lt3.exclude.mode = "flag.both"` will exclude both measurements for a
+ subject if they only have two unexcluded measurements of one parameter type
+ with at least one implausible value and no same age-day measurements of the
+ other parameter.
- * `ref.data.path = "inst/extdata"` shouldn't be necessary if you have the
- `growthcleanr` package installed, but if you are running it from its
- source directly you may need to specify its full path.
+- `ref.data.path = "inst/extdata"` shouldn't be necessary if you have the
+ `growthcleanr` package installed, but if you are running it from its
+ source directly you may need to specify its full path.
- * `quietly = F` enables verbose output, marking the progress of the algorithm
- through its many processing steps. This can be very helpful while testing.
+- `quietly = F` enables verbose output, marking the progress of the algorithm
+ through its many processing steps. This can be very helpful while testing.
This example shows built-in options for processing data in batches, which can
speed the process while working with large data sets:
@@ -485,15 +486,15 @@ All of the following options may be set as additional parameters in the call to
The following options change the behavior of the growthcleanr algorithm.
-* `recover.unit.error` - default `FALSE`; when `FALSE`, measurements identified
+- `recover.unit.error` - default `FALSE`; when `FALSE`, measurements identified
as unit errors (e.g., apparent height values in inches instead of centimeters)
will be flagged but not corrected, when `TRUE` these values will be corrected
and included as valid measurements for cleaning.
-* `sd.extreme` - default `25`; a very extreme value check on modified
+- `sd.extreme` - default `25`; a very extreme value check on modified
(recentered) Z-scores used as a first-pass elimination of clearly implausable
values, often due to misplaced decimals.
-* `z.extreme` - default `25`; similar usage as `sd.extreme`, for absolute
+- `z.extreme` - default `25`; similar usage as `sd.extreme`, for absolute
Z-scores.
**NOTE**: many different steps in the `growthcleanr` algorithm use highly
@@ -506,39 +507,40 @@ configured to be lower values, measurements eliminated at the early step which
checks against these extreme values will not be further considered using later
techniques.
-* `include.carryforward` - default `FALSE`; if set to `TRUE`, `growthcleanr`
+- `include.carryforward` - default `FALSE`; if set to `TRUE`, `growthcleanr`
will skip algorithm step 9, which identifies carried forward measurements, and
will not flag these values for exclusion.
-* `ewma.exp` - default `-1.5`; the exponent used for weighting measurements when
+- `ewma.exp` - default `-1.5`; the exponent used for weighting measurements when
calculating exponentially weighted moving average (EWMA). This exponent should
be negative to weight growth measurements closer to the measurement being
evaluated more strongly. Exponents that are further from zero (e.g., `-3`)
will increase the relative influence of measurements close in time to the
measurement being evaluated compared to using the default exponent.
-* `ref.data.path` - defaults to using CDC reference data from year 2000; supply
+- `ref.data.path` - defaults to using CDC reference data from year 2000; supply
a file path to use alternate reference data. Note that when running from an
installed `growthcleanr` package (e.g. having called `library(growthcleanr)`),
this path does not need to be specified. Developers testing the source code
directly from the source directory will need to specify this as well.
-* `error.load.mincount` - default `2`; minimum count of exclusions on parameter
+- `error.load.mincount` - default `2`; minimum count of exclusions on parameter
for one subject before considering excluding all measurements.
-* `error.load.threshold` - default `0.5`; threshold to exceed for percentage
+- `error.load.threshold` - default `0.5`; threshold to exceed for percentage
of excluded measurement count relative to count of included other measurement
(e.g., if 3 of 5 WTs are excluded, and 5 corresponding HTs are included, this
exceeds the 0.5 threshold and the other two WTs will be excluded).
-* `lt3.exclude.mode` - default `default`; determines type of exclusion procedure
+- `lt3.exclude.mode` - default `default`; determines type of exclusion procedure
to use for 1 or 2 measurements of one type without matching same ageday
measurements for the other parameter. Options include:
- * `default` - standard growthcleanr approach
- * `flag.both` - in case of two measurements with at least one beyond
+
+ - `default` - standard growthcleanr approach
+ - `flag.both` - in case of two measurements with at least one beyond
thresholds, flag both instead of one (as in default)
-* `sd.recenter` - defaults to NA; data frame or table w/median SD-scores per day
+- `sd.recenter` - defaults to NA; data frame or table w/median SD-scores per day
of life by gender and parameter. Columns must include param, sex, agedays, and
sd.median (referred to elsewhere as "modified Z-score"). By default, median
values will be calculated using growth data to be cleaned.
@@ -548,31 +550,31 @@ techniques.
The following options change the execution of the program overall, with no
effect on the algorithm itself.
-* `parallel` - default `FALSE`; set to `TRUE` to run `growthcleanr` in parallel.
+- `parallel` - default `FALSE`; set to `TRUE` to run `growthcleanr` in parallel.
Running in parallel will split the input data into batches (while keeping all
records for each subject together) and process each batch on a different
processor/core to maximize throughput. Recommended for large datasets with more
than 100K rows.
-* `num.batches` - specifies the number of batches to run in parallel; only
+- `num.batches` - specifies the number of batches to run in parallel; only
applies if `parallel` is set to `TRUE`. Defaults to the number of workers
returned by the `getDoParWorkers()` function in the `foreach` package. Note
that processing in parallel may affect overall system performance.
-* `sdmedian.filename` - filename for optionally saving sd.median data calculated
+- `sdmedian.filename` - filename for optionally saving sd.median data calculated
on the input dataset to as CSV. Defaults to `""`, for which this data will not
be saved. Use for extracting medians for parallel processing scenarios other
than the built-in parallel option. See notes on [large data sets](#largedata)
for details.
-* `sdrecentered.filename` - filename to save re-centered data to as CSV.
+- `sdrecentered.filename` - filename to save re-centered data to as CSV.
Defaults to "", for which this data will not be saved. Useful for
post-processing and debugging.
-* `quietly` - default `TRUE`; when `TRUE`, displays function messages and will
+- `quietly` - default `TRUE`; when `TRUE`, displays function messages and will
output log files when `parallel` is `TRUE`.
-* `log.path` - default `"."`; sets directory for batch log file output when
+- `log.path` - default `"."`; sets directory for batch log file output when
processing with `parallel = TRUE`. A new directory will be created if necessary.
## Understanding output
@@ -592,35 +594,35 @@ identifier also prescribed in the algorithm ("`algorithm exc id`"). The
`growthcleanr`. The `notes` column at right identifies minor discrepancies between
the algorithm's step labels and labels used in comment text in `growthcleanr`.
-| algorithm step | algorithm exc id | exclusion type | notes |
-| - | - | - | - |
-| 2d | 0 | Include | - |
-| 2d | 1 | Missing | - |
-| 5b | 2 | Exclude-Temporary-Extraneous-Same-Day | - |
-| 7d | - | Swapped-Measurement | - |
-| 8f | - | Unit-Error-High | - |
-| 8f | - | Unit-Error-Low | - |
-| 8f | - | Unit-Error-Possible | Not set in R code |
-| 9c | 3 | Exclude-Carried-Forward | - |
-| 10c | 4 | Exclude-SD-Cutoff | 10d, 10e |
-| 11d | 5 | Exclude-EWMA-Extreme | 11e |
-| 11f.ii | 6 | Exclude-EWMA-Extreme-Pair | 11i (R only) |
-| 12d.i | 7 | Exclude-Extraneous-Same-Day | 12diii, 12ei, 12f |
-| 14f.i | 8 | Exclude-EWMA-8 | Set in 14h (in R) |
-| 14f.ii | 9 | Exclude-EWMA-9 | Set in 14h (in R) |
-| 14f.iii | 10 | Exclude-EWMA-10 | Set in 14h (in R) |
-| 14f.iv | 11 | Exclude-EWMA-11 | Set in 14h (in R) |
-| 14f.v | 12 | Exclude-EWMA-12 | Set in 14h (in R) |
-| 14f.vi | 13 | Exclude-EWMA-13 | Set in 14h (in R) |
-| 14f.vii | 14 | Exclude-EWMA-14 | Set in 14h (in R) |
-| 15s | 15 | Exclude-Min-Height-Change | Set in 15q (in R), 15s, 15t |
-| 15s | 16 | Exclude-Max-Height-Change | Set in 15q (in R), 15s, 15t |
-| 16b | 17 | Exclude-Pair-Delta-17 | - |
-| 16b | 18 | Exclude-Pair-Delta-18 | - |
-| - | - | Exclude-Pair-Delta-19 | Added `flag.both` mode |
-| 16d | 19 | Exclude-Single-Outlier | - |
-| 17a | 20 | Exclude-Too-Many-Errors | - |
-| 17a | 21 | Exclude-Too-Many-Errors-Other_Parameter | - |
+| algorithm step | algorithm exc id | exclusion type | notes |
+| -------------- | ---------------- | --------------------------------------- | --------------------------- |
+| 2d | 0 | Include | - |
+| 2d | 1 | Missing | - |
+| 5b | 2 | Exclude-Temporary-Extraneous-Same-Day | - |
+| 7d | - | Swapped-Measurement | - |
+| 8f | - | Unit-Error-High | - |
+| 8f | - | Unit-Error-Low | - |
+| 8f | - | Unit-Error-Possible | Not set in R code |
+| 9c | 3 | Exclude-Carried-Forward | - |
+| 10c | 4 | Exclude-SD-Cutoff | 10d, 10e |
+| 11d | 5 | Exclude-EWMA-Extreme | 11e |
+| 11f.ii | 6 | Exclude-EWMA-Extreme-Pair | 11i (R only) |
+| 12d.i | 7 | Exclude-Extraneous-Same-Day | 12diii, 12ei, 12f |
+| 14f.i | 8 | Exclude-EWMA-8 | Set in 14h (in R) |
+| 14f.ii | 9 | Exclude-EWMA-9 | Set in 14h (in R) |
+| 14f.iii | 10 | Exclude-EWMA-10 | Set in 14h (in R) |
+| 14f.iv | 11 | Exclude-EWMA-11 | Set in 14h (in R) |
+| 14f.v | 12 | Exclude-EWMA-12 | Set in 14h (in R) |
+| 14f.vi | 13 | Exclude-EWMA-13 | Set in 14h (in R) |
+| 14f.vii | 14 | Exclude-EWMA-14 | Set in 14h (in R) |
+| 15s | 15 | Exclude-Min-Height-Change | Set in 15q (in R), 15s, 15t |
+| 15s | 16 | Exclude-Max-Height-Change | Set in 15q (in R), 15s, 15t |
+| 16b | 17 | Exclude-Pair-Delta-17 | - |
+| 16b | 18 | Exclude-Pair-Delta-18 | - |
+| - | - | Exclude-Pair-Delta-19 | Added `flag.both` mode |
+| 16d | 19 | Exclude-Single-Outlier | - |
+| 17a | 20 | Exclude-Too-Many-Errors | - |
+| 17a | 21 | Exclude-Too-Many-Errors-Other_Parameter | - |
A researcher wanting to compare two datasets -- for example, one including only
measurements `growthcleanr` flags for inclusion, and a second which also
@@ -645,14 +647,14 @@ If you have under one million records, using `growthcleanr` may just
necessitate planning to wait a little while the job processes. There are
several strategies to improve performance you might consider:
- * The built-in `parallel` option should take advantage of multiple CPU cores
- when your hardware allows.
- * Running `growthcleanr` on a machine with more CPU cores and more RAM can
- improve this further.
- * Verify that supporting libraries like `data.table` are
- [installed properly](#platform) for your machine
- * Anecdotally, Windows users have sometimes seen slower performance when
- compared with similarly-appointed hardware running Linux or macOS.
+- The built-in `parallel` option should take advantage of multiple CPU cores
+ when your hardware allows.
+- Running `growthcleanr` on a machine with more CPU cores and more RAM can
+ improve this further.
+- Verify that supporting libraries like `data.table` are
+ [installed properly](#platform) for your machine
+- Anecdotally, Windows users have sometimes seen slower performance when
+ compared with similarly-appointed hardware running Linux or macOS.
For very large datasets, on the order of millions of records or more, cleaning
data can take several hours or more. When running this kind of job, the risk of
@@ -673,14 +675,14 @@ available RAM.
Adopting this approach might require some custom code, and there are few
pitfalls to avoid. The following lays out a rough approach:
-* Extract `sd.median` values for the entire dataset as a whole using the
+- Extract `sd.median` values for the entire dataset as a whole using the
`sdmedian.filename` option. This is critical, as `growthcleanr` will generate
these values itself for an input dataset if they are not provided. If a large
dataset is split into 1,000 smaller files to be cleaned separately, each of
those 1,000 `growthcleanr` jobs needs to use the same `sd.median` values to
recenter or the results will be inconsistent. Pass this data in to
`cleangrowth()` using the parameter `sd.recenter`.
-* Split the data into many small files, but keep each individual subject's
+- Split the data into many small files, but keep each individual subject's
measurements together in one file. If, for example, a subject has 12
measurements, all 12 should be in one and only one of the smaller files to
maximize the longitudinal analysis of their values. The `splitinput()`
@@ -694,15 +696,15 @@ pitfalls to avoid. The following lays out a rough approach:
[1] "mydata.00000.csv" "mydata.00001.csv" "mydata.00002.csv" "mydata.00003.csv" "mydata.00004.csv" "mydata.00005.csv"
```
-* Use the standalone driver script `exec/gcdriver.R` to execute growthcleanr`
+- Use the standalone driver script `exec/gcdriver.R` to execute growthcleanr`
on each separate file, then write out its results when complete. An example
is below.
-* Invoke the job using a tool like
+- Invoke the job using a tool like
[GNU Parallel](https://www.gnu.org/software/parallel/), which can be run on
all major platforms. An example invocation is below as well.
-* If a failure occurs, set aside both the completed inputs and their results.
+- If a failure occurs, set aside both the completed inputs and their results.
Then re-run the job on only the remaining input data.
-* When complete, re-combine the data into one file or as otherwise appropriate.
+- When complete, re-combine the data into one file or as otherwise appropriate.
To invoke `gcdriver.R` on a single input file using `Rscript`:
@@ -724,17 +726,17 @@ as resources are available. Each run of the job then saves the cleaned output
with `-clean` appended to the input filename, and as each completes, the next
file on the list will be started until all are complete. A few things to note:
-* The careful use of naming and wildcards when listing input files and naming
+- The careful use of naming and wildcards when listing input files and naming
output files can save accidental re-running of data from output files
-* The `-j2` option specifies running two jobs at once; `-j0` would use as many
+- The `-j2` option specifies running two jobs at once; `-j0` would use as many
CPU cores as a machine has available. This might need to vary to match
specific hardware.
-* The `--eta` option will report on progress.
-* The `--quietly` option on the driver script will make it easier to monitor
+- The `--eta` option will report on progress.
+- The `--quietly` option on the driver script will make it easier to monitor
progress with less verbose output coming from `growthcleanr`.
-* The `--sdrecenter` option on the driver script should be set to ensure each
+- The `--sdrecenter` option on the driver script should be set to ensure each
individual file is recentered using the same set for the entire input.
-* If multiple cores are available, the job should proceed with speedup roughly
+- If multiple cores are available, the job should proceed with speedup roughly
similar to what can be gained using the parallel batching feature built in to
`growthcleanr`, with the main difference being the saving of intermediate
output as each smaller file completes.
@@ -896,16 +898,16 @@ With data in wide format and with sex variables properly coded, `ext_bmiz()` can
The output columns include:
-| variable | description |
-| - | - |
-| waz, wp | LMS Weight-for-sex/age z-score and percentile |
-| haz, hp | LMS Height-for-sex/age z-score and percentile |
-| bmiz, bmip | LMS BMI-for-sex/age z-score and percentile |
-| mod_waz, mod_haz, mod_bmi | Modified z-scores for identifying outliers (see the information in the [CDC SAS growth charts program website](https://www.cdc.gov/nccdphp/dnpao/growthcharts/resources/sas.htm)) |
-| bmip95 | BMI expressed as a percentage of the 95th percentile. A value ≥ 120 is widely used as the cut point for severe obesity. |
-| sigma | Scale parameter of the half-normal distribution |
-| ext_bmip | Extended BMI percentile |
-| ext_bmiz | Extended BMI z-score |
+| variable | description |
+| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| waz, wp | LMS Weight-for-sex/age z-score and percentile |
+| haz, hp | LMS Height-for-sex/age z-score and percentile |
+| bmiz, bmip | LMS BMI-for-sex/age z-score and percentile |
+| mod_waz, mod_haz, mod_bmi | Modified z-scores for identifying outliers (see the information in the [CDC SAS growth charts program website](https://www.cdc.gov/nccdphp/dnpao/growthcharts/resources/sas.htm)) |
+| bmip95 | BMI expressed as a percentage of the 95th percentile. A value ≥ 120 is widely used as the cut point for severe obesity. |
+| sigma | Scale parameter of the half-normal distribution |
+| ext_bmip | Extended BMI percentile |
+| ext_bmiz | Extended BMI z-score |
For convenience, these labels are available on the output of `ext_bmiz()`, e.g., when
viewed in RStudio with `View(cleaned_data_bmi)`, or on the console:
@@ -952,3 +954,25 @@ above under [Computing BMI percentiles and Z-scores](#bmi).
`growthcleanr` assesses data, packaged in a Jupyter notebook. It ships with the
same `syngrowth` synthetic example dataset as `growthcleanr`, with results
included.
+
+## Changes
+
+For a detailed history of released versions, see `NEWS.md`.
+
+In release 1.2.4 in January 2021, an update was made to the WHO height velocity 3sd
+files to correct a small number of errors:
+
+- `inst/extdata/who_ht_maxvel_3sd.csv`
+- `inst/extdata/who_ht_vel_3sd.csv`
+
+Although these changes were very minor, it is possible that results on data cleaned
+after this change may vary from previous results. The prior version of these files may
+be obtained by visiting the tagged release version 1.2.3 at
+https://github.com/carriedaymont/growthcleanr/releases/tag/1.2.3.
+
+The released version of `growthcleanr` available at that link contains the older
+version of both files; that older version may be used to verify reproducibility.
+
+Alternatively, a more recent version of `growthcleanr` may be used with only the
+affected files replaced with their older versions available at the 1.2.3 tag link
+above. This must be done manually.
diff --git a/inst/extdata/who_ht_maxvel_3sd.csv b/inst/extdata/who_ht_maxvel_3sd.csv
index 58d66175..5e131566 100644
--- a/inst/extdata/who_ht_maxvel_3sd.csv
+++ b/inst/extdata/who_ht_maxvel_3sd.csv
@@ -1 +1,195 @@
-sex,whoagegrp_ht,max_whoinc_1_ht,max_whoinc_2_ht,max_whoinc_3_ht,max_whoinc_4_ht,max_whoinc_6_ht
0,0,11.9,11.9,15.4,18.2,22.7
0,1,10,10,13.2,15.6,19.6
0,2,8.5,8.5,11.2,13.2,17
0,3,7.4,7.4,9.7,11.4,15
0,4,6.5,6.5,8.6,10.1,13.5
0,5,5.9,5.9,7.9,9.3,12.6
0,6,5.5,5.5,7.4,8.8,11.9
0,7,5.4,5.4,7.1,8.4,11.3
0,8,5.2,5.2,6.8,8.1,10.9
0,9,5.1,5.1,6.7,7.9,10.5
0,10,4.9,4.9,6.5,7.6,10.2
0,11,4.8,4.8,6.4,7.4,9.9
0,12,4.8,4.8,6.3,7.2,9.6
0,13,4.7,4.7,6.1,7,9.4
0,14,4.6,4.6,6,6.9,9.2
0,15,4.5,4.5,5.9,6.8,9
0,16,4.5,4.5,5.8,6.6,8.8
0,17,4.4,4.4,5.7,6.5,8.6
0,18,4.4,4.4,5.7,6.4,8.4
0,19,4.4,4.4,5.6,6.3,6.3
0,20,4.3,4.3,5.6,6.2,6.3
0,21,4.3,4.3,5.5,6.2,6.3
0,22,4.3,4.3,5.5,6.2,6.3
0,23,4.3,4.3,5.5,6.2,6.3
1,0,11.3,11.3,14.4,17.3,21.6
1,1,9.3,9.3,12.4,14.7,18.6
1,2,7.9,7.9,10.6,12.4,16.2
1,3,7,7,9.2,11,14.5
1,4,6.2,6.2,8.3,10,13.3
1,5,5.7,5.7,7.8,9.3,12.5
1,6,5.5,5.5,7.4,8.9,11.9
1,7,5.4,5.4,7.1,8.6,11.5
1,8,5.2,5.2,6.9,8.3,11.2
1,9,5,5,6.7,8.1,10.9
1,10,4.9,4.9,6.5,7.9,10.6
1,11,4.8,4.8,6.4,7.7,10.4
1,12,4.7,4.7,6.3,7.5,10
1,13,4.6,4.6,6.2,7.4,9.8
1,14,4.6,4.6,6.2,7.2,9.6
1,15,4.6,4.6,6.1,7.1,9.4
1,16,4.5,4.5,6,6.8,9.1
1,17,4.5,4.5,5.9,6.7,8.9
1,18,4.4,4.4,5.8,6.5,6.5
1,19,4.3,4.3,5.7,6.4,6.4
1,20,4.3,4.3,5.6,5.6,6.4
1,21,4.2,4.2,5.5,5.6,6.4
1,22,4.2,4.2,5.5,5.6,6.4
1,23,4.2,4.2,5.5,5.6,6.4
\ No newline at end of file
+sex,whoagegrp_ht,max_whoinc_1_ht,max_whoinc_2_ht,max_whoinc_3_ht,max_whoinc_4_ht,max_whoinc_6_ht
+0,0,11.9,11.9,15.4,18.2,22.7
+0,1,10.0,10.0,13.2,15.6,19.6
+0,2,8.5,8.5,11.2,13.2,17.0
+0,3,7.4,7.4,9.7,11.4,15.0
+0,4,6.5,6.5,8.6,10.1,13.5
+0,5,5.9,5.9,7.9,9.3,12.6
+0,6,5.5,5.5,7.4,8.8,11.9
+0,7,5.4,5.4,7.1,8.4,11.3
+0,8,5.2,5.2,6.8,8.1,10.9
+0,9,5.1,5.1,6.7,7.9,10.5
+0,10,4.9,4.9,6.5,7.6,10.2
+0,11,4.8,4.8,6.4,7.4,9.9
+0,12,4.8,4.8,6.3,7.2,9.6
+0,13,4.7,4.7,6.1,7.0,9.4
+0,14,4.6,4.6,6.0,6.9,9.2
+0,15,4.5,4.5,5.9,6.8,9.0
+0,16,4.5,4.5,5.8,6.6,8.8
+0,17,4.4,4.4,5.7,6.5,8.6
+0,18,4.4,4.4,5.7,6.4,8.4
+0,19,4.4,4.4,5.6,6.3,7.0
+0,20,4.3,4.3,5.6,6.2,7.0
+0,21,4.3,4.3,5.5,6.2,7.0
+0,22,4.3,4.3,5.5,6.2,7.0
+0,23,4.3,4.3,5.5,6.2,7.0
+0,24,6.7,6.7,6.7,6.7,6.7
+0,25,6.6,6.6,6.6,6.6,6.6
+0,26,6.5,6.5,6.5,6.5,6.5
+0,27,6.4,6.4,6.4,6.4,6.4
+0,28,6.3,6.3,6.3,6.3,6.3
+0,29,6.3,6.3,6.3,6.3,6.3
+0,30,6.2,6.2,6.2,6.2,6.2
+0,31,5.8,5.8,5.8,5.8,5.8
+0,32,5.8,5.8,5.8,5.8,5.8
+0,33,5.8,5.8,5.8,5.8,5.8
+0,34,5.8,5.8,5.8,5.8,5.8
+0,35,5.7,5.7,5.7,5.7,5.7
+0,36,5.7,5.7,5.7,5.7,5.7
+0,37,5.7,5.7,5.7,5.7,5.7
+0,38,5.6,5.6,5.6,5.6,5.6
+0,39,5.6,5.6,5.6,5.6,5.6
+0,40,5.6,5.6,5.6,5.6,5.6
+0,41,5.6,5.6,5.6,5.6,5.6
+0,42,5.5,5.5,5.5,5.5,5.5
+0,43,5.5,5.5,5.5,5.5,5.5
+0,44,5.5,5.5,5.5,5.5,5.5
+0,45,5.5,5.5,5.5,5.5,5.5
+0,46,5.4,5.4,5.4,5.4,5.4
+0,47,5.4,5.4,5.4,5.4,5.4
+0,48,5.4,5.4,5.4,5.4,5.4
+0,49,5.3,5.3,5.3,5.3,5.3
+0,50,5.3,5.3,5.3,5.3,5.3
+0,51,5.3,5.3,5.3,5.3,5.3
+0,52,5.2,5.2,5.2,5.2,5.2
+0,53,5.2,5.2,5.2,5.2,5.2
+0,54,5.2,5.2,5.2,5.2,5.2
+0,55,5.1,5.1,5.1,5.1,5.1
+0,56,5.1,5.1,5.1,5.1,5.1
+0,57,5.0,5.0,5.0,5.0,5.0
+0,58,5.0,5.0,5.0,5.0,5.0
+0,59,5.0,5.0,5.0,5.0,5.0
+0,60,5.0,5.0,5.0,5.0,5.0
+0,61,4.9,4.9,4.9,4.9,4.9
+0,62,4.9,4.9,4.9,4.9,4.9
+0,63,4.9,4.9,4.9,4.9,4.9
+0,64,4.9,4.9,4.9,4.9,4.9
+0,65,4.8,4.8,4.8,4.8,4.8
+0,66,4.8,4.8,4.8,4.8,4.8
+0,67,4.7,4.7,4.7,4.7,4.7
+0,68,4.7,4.7,4.7,4.7,4.7
+0,69,4.7,4.7,4.7,4.7,4.7
+0,70,4.7,4.7,4.7,4.7,4.7
+0,71,4.7,4.7,4.7,4.7,4.7
+0,72,4.7,4.7,4.7,4.7,4.7
+0,73,4.6,4.6,4.6,4.6,4.6
+0,74,4.6,4.6,4.6,4.6,4.6
+0,75,4.6,4.6,4.6,4.6,4.6
+0,76,4.6,4.6,4.6,4.6,4.6
+0,77,4.6,4.6,4.6,4.6,4.6
+0,78,4.6,4.6,4.6,4.6,4.6
+0,79,4.6,4.6,4.6,4.6,4.6
+0,80,4.6,4.6,4.6,4.6,4.6
+0,81,4.6,4.6,4.6,4.6,4.6
+0,82,4.5,4.5,4.5,4.5,4.5
+0,83,4.5,4.5,4.5,4.5,4.5
+0,84,4.5,4.5,4.5,4.5,4.5
+0,85,4.5,4.5,4.5,4.5,4.5
+0,86,4.5,4.5,4.5,4.5,4.5
+0,87,4.5,4.5,4.5,4.5,4.5
+0,88,4.5,4.5,4.5,4.5,4.5
+0,89,4.5,4.5,4.5,4.5,4.5
+0,90,4.5,4.5,4.5,4.5,4.5
+0,91,4.1,4.1,4.1,4.1,4.1
+0,92,4.1,4.1,4.1,4.1,4.1
+0,93,4.1,4.1,4.1,4.1,4.1
+0,94,4.1,4.1,4.1,4.1,4.1
+0,95,4.1,4.1,4.1,4.1,4.1
+0,96,4.1,4.1,4.1,4.1,4.1
+1,0,11.3,11.3,14.4,17.3,21.6
+1,1,9.3,9.3,12.4,14.7,18.6
+1,2,7.9,7.9,10.6,12.4,16.2
+1,3,7.0,7.0,9.2,11.0,14.5
+1,4,6.2,6.2,8.3,10.0,13.3
+1,5,5.7,5.7,7.8,9.3,12.5
+1,6,5.5,5.5,7.4,8.9,11.9
+1,7,5.4,5.4,7.1,8.6,11.5
+1,8,5.2,5.2,6.9,8.3,11.2
+1,9,5.0,5.0,6.7,8.1,10.9
+1,10,4.9,4.9,6.5,7.9,10.6
+1,11,4.8,4.8,6.4,7.7,10.4
+1,12,4.7,4.7,6.3,7.5,10.2
+1,13,4.6,4.6,6.2,7.4,10.0
+1,14,4.6,4.6,6.2,7.2,9.8
+1,15,4.6,4.6,6.1,7.1,9.6
+1,16,4.5,4.5,6.0,6.8,9.4
+1,17,4.5,4.5,5.9,6.7,9.1
+1,18,4.4,4.4,5.8,6.5,8.9
+1,19,4.3,4.3,5.7,6.4,7.0
+1,20,4.3,4.3,5.6,5.6,7.0
+1,21,4.2,4.2,5.5,5.6,7.0
+1,22,4.2,4.2,5.5,5.6,7.0
+1,23,4.2,4.2,5.5,5.6,7.0
+1,24,7.0,7.0,7.0,7.0,7.0
+1,25,6.9,6.9,6.9,6.9,6.9
+1,26,6.8,6.8,6.8,6.8,6.8
+1,27,6.7,6.7,6.7,6.7,6.7
+1,28,6.6,6.6,6.6,6.6,6.6
+1,29,6.5,6.5,6.5,6.5,6.5
+1,30,6.5,6.5,6.5,6.5,6.5
+1,31,6.2,6.2,6.2,6.2,6.2
+1,32,6.2,6.2,6.2,6.2,6.2
+1,33,6.1,6.1,6.1,6.1,6.1
+1,34,6.1,6.1,6.1,6.1,6.1
+1,35,6.0,6.0,6.0,6.0,6.0
+1,36,6.0,6.0,6.0,6.0,6.0
+1,37,5.9,5.9,5.9,5.9,5.9
+1,38,5.9,5.9,5.9,5.9,5.9
+1,39,5.8,5.8,5.8,5.8,5.8
+1,40,5.8,5.8,5.8,5.8,5.8
+1,41,5.7,5.7,5.7,5.7,5.7
+1,42,5.7,5.7,5.7,5.7,5.7
+1,43,5.5,5.5,5.5,5.5,5.5
+1,44,5.5,5.5,5.5,5.5,5.5
+1,45,5.5,5.5,5.5,5.5,5.5
+1,46,5.4,5.4,5.4,5.4,5.4
+1,47,5.4,5.4,5.4,5.4,5.4
+1,48,5.4,5.4,5.4,5.4,5.4
+1,49,5.3,5.3,5.3,5.3,5.3
+1,50,5.3,5.3,5.3,5.3,5.3
+1,51,5.2,5.2,5.2,5.2,5.2
+1,52,5.2,5.2,5.2,5.2,5.2
+1,53,5.2,5.2,5.2,5.2,5.2
+1,54,5.1,5.1,5.1,5.1,5.1
+1,55,5.0,5.0,5.0,5.0,5.0
+1,56,5.0,5.0,5.0,5.0,5.0
+1,57,5.0,5.0,5.0,5.0,5.0
+1,58,5.0,5.0,5.0,5.0,5.0
+1,59,4.9,4.9,4.9,4.9,4.9
+1,60,4.9,4.9,4.9,4.9,4.9
+1,61,4.9,4.9,4.9,4.9,4.9
+1,62,4.9,4.9,4.9,4.9,4.9
+1,63,4.8,4.8,4.8,4.8,4.8
+1,64,4.8,4.8,4.8,4.8,4.8
+1,65,4.8,4.8,4.8,4.8,4.8
+1,66,4.8,4.8,4.8,4.8,4.8
+1,67,4.7,4.7,4.7,4.7,4.7
+1,68,4.7,4.7,4.7,4.7,4.7
+1,69,4.6,4.6,4.6,4.6,4.6
+1,70,4.6,4.6,4.6,4.6,4.6
+1,71,4.6,4.6,4.6,4.6,4.6
+1,72,4.6,4.6,4.6,4.6,4.6
+1,73,4.6,4.6,4.6,4.6,4.6
+1,74,4.6,4.6,4.6,4.6,4.6
+1,75,4.6,4.6,4.6,4.6,4.6
+1,76,4.6,4.6,4.6,4.6,4.6
+1,77,4.5,4.5,4.5,4.5,4.5
+1,78,4.5,4.5,4.5,4.5,4.5
+1,79,4.5,4.5,4.5,4.5,4.5
+1,80,4.5,4.5,4.5,4.5,4.5
+1,81,4.5,4.5,4.5,4.5,4.5
+1,82,4.5,4.5,4.5,4.5,4.5
+1,83,4.5,4.5,4.5,4.5,4.5
+1,84,4.5,4.5,4.5,4.5,4.5
+1,85,4.5,4.5,4.5,4.5,4.5
+1,86,4.5,4.5,4.5,4.5,4.5
+1,87,4.5,4.5,4.5,4.5,4.5
+1,88,4.5,4.5,4.5,4.5,4.5
+1,89,4.5,4.5,4.5,4.5,4.5
+1,90,4.5,4.5,4.5,4.5,4.5
+1,91,4.4,4.4,4.4,4.4,4.4
+1,92,4.4,4.4,4.4,4.4,4.4
+1,93,4.4,4.4,4.4,4.4,4.4
+1,94,4.4,4.4,4.4,4.4,4.4
+1,95,4.4,4.4,4.4,4.4,4.4
+1,96,4.4,4.4,4.4,4.4,4.4
\ No newline at end of file
diff --git a/inst/extdata/who_ht_vel_3sd.csv b/inst/extdata/who_ht_vel_3sd.csv
index 348cc3d7..c42959c3 100644
--- a/inst/extdata/who_ht_vel_3sd.csv
+++ b/inst/extdata/who_ht_vel_3sd.csv
@@ -1 +1,195 @@
-sex,whoagegrp_ht,whoinc_1_ht,whoinc_2_ht,whoinc_3_ht,whoinc_4_ht,whoinc_6_ht
0,0,1.275,5.1,7.7,9.7,12.7
0,1,1.025,4.1,6,7.3,10
0,2,0.675,2.7,4.2,5.4,7.8
0,3,0.425,1.7,3,4.1,6.4
0,4,0.275,1.1,2.3,3.3,5.4
0,5,0.175,0.7,1.8,2.8,4.9
0,6,0.125,0.5,1.6,2.5,4.5
0,7,0.1,0.4,1.4,2.3,4.3
0,8,0.075,0.3,1.3,2.2,4.1
0,9,0.05,0.2,1.2,2,3.9
0,10,0.05,0.2,1.1,1.9,3.8
0,11,0.025,0.1,1,1.8,3.6
0,12,0,0,0.9,1.7,3.5
0,13,0,0,0.7,1.6,3.3
0,14,0,0,0.6,1.5,3.2
0,15,0,0,0.6,1.4,3.1
0,16,0,0,0.5,1.3,2.9
0,17,0,0,0.4,1.2,3.8
0,18,0,0,0.4,1.1,2.7
0,19,0,0,0.3,1,2.7
0,20,0,0,0.2,0.9,2.7
0,21,0,0,0.2,0.9,2.7
0,22,0,0,0.2,0.9,2.7
0,23,0,0,0,0,1.8
0,24,0,0,0,0,1.8
0,25,0,0,0,0,1.8
0,26,0,0,0,0,1.8
0,27,0,0,0,0,1.8
0,28,0,0,0,0,1.7
0,29,0,0,0,0,1.7
0,30,0,0,0,0,1.7
0,31,0,0,0,0,1.6
0,32,0,0,0,0,1.6
0,33,0,0,0,0,1.6
0,34,0,0,0,0,1.6
0,35,0,0,0,0,1.6
0,36,0,0,0,0,1.6
0,37,0,0,0,0,1.6
0,38,0,0,0,0,1.6
0,39,0,0,0,0,1.6
0,40,0,0,0,0,1.6
0,41,0,0,0,0,1.6
0,42,0,0,0,0,1.6
0,43,0,0,0,0,1.6
0,44,0,0,0,0,1.6
0,45,0,0,0,0,1.6
0,46,0,0,0,0,1.6
0,47,0,0,0,0,1.6
0,48,0,0,0,0,1.6
0,49,0,0,0,0,1.5
0,50,0,0,0,0,1.5
0,51,0,0,0,0,1.5
0,52,0,0,0,0,1.5
0,53,0,0,0,0,1.5
0,54,0,0,0,0,1.5
0,55,0,0,0,0,1.4
0,56,0,0,0,0,1.4
0,57,0,0,0,0,1.4
0,58,0,0,0,0,1.4
0,59,0,0,0,0,1.4
0,60,0,0,0,0,1.4
0,61,0,0,0,0,1.4
0,62,0,0,0,0,1.4
0,63,0,0,0,0,1.4
0,64,0,0,0,0,1.4
0,65,0,0,0,0,1.4
0,66,0,0,0,0,1.4
0,67,0,0,0,0,1.4
0,68,0,0,0,0,1.4
0,69,0,0,0,0,1.4
0,70,0,0,0,0,1.4
0,71,0,0,0,0,1.4
0,72,0,0,0,0,1.4
0,73,0,0,0,0,1.3
0,74,0,0,0,0,1.3
0,75,0,0,0,0,1.3
0,76,0,0,0,0,1.3
0,77,0,0,0,0,1.3
0,78,0,0,0,0,1.3
0,79,0,0,0,0,1.3
0,80,0,0,0,0,1.3
0,81,0,0,0,0,1.3
0,82,0,0,0,0,1.3
0,83,0,0,0,0,1.3
0,84,0,0,0,0,1.3
0,85,0,0,0,0,1.3
0,86,0,0,0,0,1.3
0,87,0,0,0,0,1.3
0,88,0,0,0,0,1.3
0,89,0,0,0,0,1.3
0,90,0,0,0,0,1.3
0,91,0,0,0,0,1.1
0,92,0,0,0,0,1.1
0,93,0,0,0,0,1.1
0,94,0,0,0,0,1.1
0,95,0,0,0,0,1.1
0,96,0,0,0,0,1.1
1,0,1.15,4.6,7,9,11.8
1,1,0.875,3.5,5.3,6.9,9.6
1,2,0.6,2.4,3.9,5.3,7.8
1,3,0.4,1.6,2.9,4.2,6.7
1,4,0.25,1,2.3,3.5,5.8
1,5,0.425,1.7,1.9,3.1,5.3
1,6,0.125,0.5,1.7,2.8,5
1,7,0.1,0.4,1.5,2.7,4.7
1,8,0.1,0.4,1.4,2.5,4.4
1,9,0.075,0.3,1.3,2.4,4.2
1,10,0.05,0.2,1.2,2.2,4
1,11,0.025,0.1,1.1,2.1,3.8
1,12,0.025,0.1,1,2,3.7
1,13,0.025,0.1,0.9,1.9,3.5
1,14,0.025,0.1,0.8,1.7,3.4
1,15,0.025,0.1,0.7,1.7,3.2
1,16,0.025,0.1,0.6,1.6,3.1
1,17,0.025,0.1,0.6,1.5,3
1,18,0.025,0.1,0.5,1.4,2.8
1,19,0.025,0.1,0.4,1.3,2.8
1,20,0,0,0.4,1.3,2.8
1,21,0,0,0.3,1.3,2.8
1,22,0,0,0.3,1.3,2.8
1,23,0,0,0,0,2
1,24,0,0,0,0,2
1,25,0,0,0,0,1.9
1,26,0,0,0,0,1.9
1,27,0,0,0,0,1.9
1,28,0,0,0,0,1.9
1,29,0,0,0,0,1.8
1,30,0,0,0,0,1.8
1,31,0,0,0,0,1.7
1,32,0,0,0,0,1.7
1,33,0,0,0,0,1.7
1,34,0,0,0,0,1.7
1,35,0,0,0,0,1.7
1,36,0,0,0,0,1.7
1,37,0,0,0,0,1.6
1,38,0,0,0,0,1.6
1,39,0,0,0,0,1.6
1,40,0,0,0,0,1.6
1,41,0,0,0,0,1.6
1,42,0,0,0,0,1.6
1,43,0,0,0,0,1.5
1,44,0,0,0,0,1.5
1,45,0,0,0,0,1.5
1,46,0,0,0,0,1.5
1,47,0,0,0,0,1.5
1,48,0,0,0,0,1.5
1,49,0,0,0,0,1.5
1,50,0,0,0,0,1.5
1,51,0,0,0,0,1.5
1,52,0,0,0,0,1.5
1,53,0,0,0,0,1.5
1,54,0,0,0,0,1.5
1,55,0,0,0,0,1.4
1,56,0,0,0,0,1.4
1,57,0,0,0,0,1.4
1,58,0,0,0,0,1.4
1,59,0,0,0,0,1.4
1,60,0,0,0,0,1.5
1,61,0,0,0,0,1.5
1,62,0,0,0,0,1.5
1,63,0,0,0,0,1.5
1,64,0,0,0,0,1.5
1,65,0,0,0,0,1.5
1,66,0,0,0,0,1.5
1,67,0,0,0,0,1.5
1,68,0,0,0,0,1.5
1,69,0,0,0,0,1.5
1,70,0,0,0,0,1.5
1,71,0,0,0,0,1.5
1,72,0,0,0,0,1.5
1,73,0,0,0,0,1.5
1,74,0,0,0,0,1.5
1,75,0,0,0,0,1.5
1,76,0,0,0,0,1.5
1,77,0,0,0,0,1.5
1,78,0,0,0,0,1.5
1,79,0,0,0,0,1.6
1,80,0,0,0,0,1.6
1,81,0,0,0,0,1.6
1,82,0,0,0,0,1.6
1,83,0,0,0,0,1.6
1,84,0,0,0,0,1.6
1,85,0,0,0,0,1.6
1,86,0,0,0,0,1.6
1,87,0,0,0,0,1.6
1,88,0,0,0,0,1.6
1,89,0,0,0,0,1.6
1,90,0,0,0,0,1.6
1,91,0,0,0,0,1.5
1,92,0,0,0,0,1.5
1,93,0,0,0,0,1.5
1,94,0,0,0,0,1.5
1,95,0,0,0,0,1.5
1,96,0,0,0,0,1.5
\ No newline at end of file
+sex,whoagegrp_ht,whoinc_1_ht,whoinc_2_ht,whoinc_3_ht,whoinc_4_ht,whoinc_6_ht
+0,0,1.3,5.1,7.7,9.7,12.7
+0,1,1.0,4.1,6.0,7.3,10.0
+0,2,0.7,2.7,4.2,5.4,7.8
+0,3,0.4,1.7,3.0,4.1,6.4
+0,4,0.3,1.1,2.3,3.3,5.4
+0,5,0.2,0.7,1.8,2.8,4.9
+0,6,0.1,0.5,1.6,2.5,4.5
+0,7,0.1,0.4,1.4,2.3,4.3
+0,8,0.1,0.3,1.3,2.2,4.1
+0,9,0.1,0.2,1.2,2.0,3.9
+0,10,0.1,0.2,1.1,1.9,3.8
+0,11,0.0,0.1,1.0,1.8,3.6
+0,12,0.0,0.0,0.9,1.7,3.5
+0,13,0.0,0.0,0.7,1.6,3.3
+0,14,0.0,0.0,0.6,1.5,3.2
+0,15,0.0,0.0,0.6,1.4,3.1
+0,16,0.0,0.0,0.5,1.3,2.9
+0,17,0.0,0.0,0.4,1.2,2.8
+0,18,0.0,0.0,0.4,1.1,2.7
+0,19,0.0,0.0,0.3,1.0,2.7
+0,20,0.0,0.0,0.2,0.9,2.7
+0,21,0.0,0.0,0.2,0.9,2.7
+0,22,0.0,0.0,0.2,0.9,2.7
+0,23,0.0,0.0,0.0,0.0,1.8
+0,24,0.0,0.0,0.0,0.0,1.8
+0,25,0.0,0.0,0.0,0.0,1.8
+0,26,0.0,0.0,0.0,0.0,1.8
+0,27,0.0,0.0,0.0,0.0,1.8
+0,28,0.0,0.0,0.0,0.0,1.7
+0,29,0.0,0.0,0.0,0.0,1.7
+0,30,0.0,0.0,0.0,0.0,1.7
+0,31,0.0,0.0,0.0,0.0,1.6
+0,32,0.0,0.0,0.0,0.0,1.6
+0,33,0.0,0.0,0.0,0.0,1.6
+0,34,0.0,0.0,0.0,0.0,1.6
+0,35,0.0,0.0,0.0,0.0,1.6
+0,36,0.0,0.0,0.0,0.0,1.6
+0,37,0.0,0.0,0.0,0.0,1.6
+0,38,0.0,0.0,0.0,0.0,1.6
+0,39,0.0,0.0,0.0,0.0,1.6
+0,40,0.0,0.0,0.0,0.0,1.6
+0,41,0.0,0.0,0.0,0.0,1.6
+0,42,0.0,0.0,0.0,0.0,1.6
+0,43,0.0,0.0,0.0,0.0,1.6
+0,44,0.0,0.0,0.0,0.0,1.6
+0,45,0.0,0.0,0.0,0.0,1.6
+0,46,0.0,0.0,0.0,0.0,1.6
+0,47,0.0,0.0,0.0,0.0,1.6
+0,48,0.0,0.0,0.0,0.0,1.6
+0,49,0.0,0.0,0.0,0.0,1.5
+0,50,0.0,0.0,0.0,0.0,1.5
+0,51,0.0,0.0,0.0,0.0,1.5
+0,52,0.0,0.0,0.0,0.0,1.5
+0,53,0.0,0.0,0.0,0.0,1.5
+0,54,0.0,0.0,0.0,0.0,1.5
+0,55,0.0,0.0,0.0,0.0,1.4
+0,56,0.0,0.0,0.0,0.0,1.4
+0,57,0.0,0.0,0.0,0.0,1.4
+0,58,0.0,0.0,0.0,0.0,1.4
+0,59,0.0,0.0,0.0,0.0,1.4
+0,60,0.0,0.0,0.0,0.0,1.4
+0,61,0.0,0.0,0.0,0.0,1.4
+0,62,0.0,0.0,0.0,0.0,1.4
+0,63,0.0,0.0,0.0,0.0,1.4
+0,64,0.0,0.0,0.0,0.0,1.4
+0,65,0.0,0.0,0.0,0.0,1.4
+0,66,0.0,0.0,0.0,0.0,1.4
+0,67,0.0,0.0,0.0,0.0,1.4
+0,68,0.0,0.0,0.0,0.0,1.4
+0,69,0.0,0.0,0.0,0.0,1.4
+0,70,0.0,0.0,0.0,0.0,1.4
+0,71,0.0,0.0,0.0,0.0,1.4
+0,72,0.0,0.0,0.0,0.0,1.4
+0,73,0.0,0.0,0.0,0.0,1.3
+0,74,0.0,0.0,0.0,0.0,1.3
+0,75,0.0,0.0,0.0,0.0,1.3
+0,76,0.0,0.0,0.0,0.0,1.3
+0,77,0.0,0.0,0.0,0.0,1.3
+0,78,0.0,0.0,0.0,0.0,1.3
+0,79,0.0,0.0,0.0,0.0,1.3
+0,80,0.0,0.0,0.0,0.0,1.3
+0,81,0.0,0.0,0.0,0.0,1.3
+0,82,0.0,0.0,0.0,0.0,1.3
+0,83,0.0,0.0,0.0,0.0,1.3
+0,84,0.0,0.0,0.0,0.0,1.3
+0,85,0.0,0.0,0.0,0.0,1.3
+0,86,0.0,0.0,0.0,0.0,1.3
+0,87,0.0,0.0,0.0,0.0,1.3
+0,88,0.0,0.0,0.0,0.0,1.3
+0,89,0.0,0.0,0.0,0.0,1.3
+0,90,0.0,0.0,0.0,0.0,1.3
+0,91,0.0,0.0,0.0,0.0,1.1
+0,92,0.0,0.0,0.0,0.0,1.1
+0,93,0.0,0.0,0.0,0.0,1.1
+0,94,0.0,0.0,0.0,0.0,1.1
+0,95,0.0,0.0,0.0,0.0,1.1
+0,96,0.0,0.0,0.0,0.0,1.1
+1,0,1.2,4.6,7.0,9.0,11.8
+1,1,0.9,3.5,5.3,6.9,9.6
+1,2,0.6,2.4,3.9,5.3,7.8
+1,3,0.4,1.6,2.9,4.2,6.7
+1,4,0.3,1.0,2.3,3.5,5.8
+1,5,0.4,1.7,1.9,3.1,5.3
+1,6,0.1,0.5,1.7,2.8,5.0
+1,7,0.1,0.4,1.5,2.7,4.7
+1,8,0.1,0.4,1.4,2.5,4.4
+1,9,0.1,0.3,1.3,2.4,4.2
+1,10,0.1,0.2,1.2,2.2,4.0
+1,11,0.0,0.1,1.1,2.1,3.8
+1,12,0.0,0.1,1.0,2.0,3.7
+1,13,0.0,0.1,0.9,1.9,3.5
+1,14,0.0,0.1,0.8,1.7,3.4
+1,15,0.0,0.1,0.7,1.7,3.2
+1,16,0.0,0.1,0.6,1.6,3.1
+1,17,0.0,0.1,0.6,1.5,3.0
+1,18,0.0,0.1,0.5,1.4,2.8
+1,19,0.0,0.1,0.4,1.3,2.8
+1,20,0.0,0.0,0.4,1.3,2.8
+1,21,0.0,0.0,0.3,1.3,2.8
+1,22,0.0,0.0,0.3,1.3,2.8
+1,23,0.0,0.0,0.0,0.0,2.0
+1,24,0.0,0.0,0.0,0.0,2.0
+1,25,0.0,0.0,0.0,0.0,1.9
+1,26,0.0,0.0,0.0,0.0,1.9
+1,27,0.0,0.0,0.0,0.0,1.9
+1,28,0.0,0.0,0.0,0.0,1.9
+1,29,0.0,0.0,0.0,0.0,1.8
+1,30,0.0,0.0,0.0,0.0,1.8
+1,31,0.0,0.0,0.0,0.0,1.7
+1,32,0.0,0.0,0.0,0.0,1.7
+1,33,0.0,0.0,0.0,0.0,1.7
+1,34,0.0,0.0,0.0,0.0,1.7
+1,35,0.0,0.0,0.0,0.0,1.7
+1,36,0.0,0.0,0.0,0.0,1.7
+1,37,0.0,0.0,0.0,0.0,1.6
+1,38,0.0,0.0,0.0,0.0,1.6
+1,39,0.0,0.0,0.0,0.0,1.6
+1,40,0.0,0.0,0.0,0.0,1.6
+1,41,0.0,0.0,0.0,0.0,1.6
+1,42,0.0,0.0,0.0,0.0,1.6
+1,43,0.0,0.0,0.0,0.0,1.5
+1,44,0.0,0.0,0.0,0.0,1.5
+1,45,0.0,0.0,0.0,0.0,1.5
+1,46,0.0,0.0,0.0,0.0,1.5
+1,47,0.0,0.0,0.0,0.0,1.5
+1,48,0.0,0.0,0.0,0.0,1.5
+1,49,0.0,0.0,0.0,0.0,1.5
+1,50,0.0,0.0,0.0,0.0,1.5
+1,51,0.0,0.0,0.0,0.0,1.5
+1,52,0.0,0.0,0.0,0.0,1.5
+1,53,0.0,0.0,0.0,0.0,1.5
+1,54,0.0,0.0,0.0,0.0,1.5
+1,55,0.0,0.0,0.0,0.0,1.4
+1,56,0.0,0.0,0.0,0.0,1.4
+1,57,0.0,0.0,0.0,0.0,1.4
+1,58,0.0,0.0,0.0,0.0,1.4
+1,59,0.0,0.0,0.0,0.0,1.4
+1,60,0.0,0.0,0.0,0.0,1.5
+1,61,0.0,0.0,0.0,0.0,1.5
+1,62,0.0,0.0,0.0,0.0,1.5
+1,63,0.0,0.0,0.0,0.0,1.5
+1,64,0.0,0.0,0.0,0.0,1.5
+1,65,0.0,0.0,0.0,0.0,1.5
+1,66,0.0,0.0,0.0,0.0,1.5
+1,67,0.0,0.0,0.0,0.0,1.5
+1,68,0.0,0.0,0.0,0.0,1.5
+1,69,0.0,0.0,0.0,0.0,1.5
+1,70,0.0,0.0,0.0,0.0,1.5
+1,71,0.0,0.0,0.0,0.0,1.5
+1,72,0.0,0.0,0.0,0.0,1.5
+1,73,0.0,0.0,0.0,0.0,1.5
+1,74,0.0,0.0,0.0,0.0,1.5
+1,75,0.0,0.0,0.0,0.0,1.5
+1,76,0.0,0.0,0.0,0.0,1.5
+1,77,0.0,0.0,0.0,0.0,1.5
+1,78,0.0,0.0,0.0,0.0,1.5
+1,79,0.0,0.0,0.0,0.0,1.6
+1,80,0.0,0.0,0.0,0.0,1.6
+1,81,0.0,0.0,0.0,0.0,1.6
+1,82,0.0,0.0,0.0,0.0,1.6
+1,83,0.0,0.0,0.0,0.0,1.6
+1,84,0.0,0.0,0.0,0.0,1.6
+1,85,0.0,0.0,0.0,0.0,1.6
+1,86,0.0,0.0,0.0,0.0,1.6
+1,87,0.0,0.0,0.0,0.0,1.6
+1,88,0.0,0.0,0.0,0.0,1.6
+1,89,0.0,0.0,0.0,0.0,1.6
+1,90,0.0,0.0,0.0,0.0,1.6
+1,91,0.0,0.0,0.0,0.0,1.5
+1,92,0.0,0.0,0.0,0.0,1.5
+1,93,0.0,0.0,0.0,0.0,1.5
+1,94,0.0,0.0,0.0,0.0,1.5
+1,95,0.0,0.0,0.0,0.0,1.5
+1,96,0.0,0.0,0.0,0.0,1.5
\ No newline at end of file