Introduction

This vignette explains how you can add variables to the cchsflow package. There are two types of variables that can be added:

  1. Existing CCHS variables to be harmonized across cycles.
  2. Derived variables based on harmonized CCHS cycles.

How to add existing CCHS variables to cchsflow

When adding variables that already exist across CCHS cycles, there are two worksheets that need to be specified:

  1. variable_details.csv: This worksheet maps variables across CCHS cycles.
  2. variables.csv: This worksheet lists all the variables that exist in cchsflow

Example of an existing CCHS variable: Body mass index (BMI)

This example will show how the existing CCHS BMI variable was developed using variable_details.csv and variables.csv. Note this variable is different from the derived BMI variable that is also included in cchsflow. For this article, a sample variable_details.csv & variables.csv will be loaded to demonstrate how to add variables.

variables <- read.csv(file.path(getwd(), '../inst/extdata/sample_variables.csv'))
variable_details <- read.csv(file.path(getwd(),'../inst/extdata/sample_variable_details.csv'))

Specifying the variable on variable_details.csv

  • For this variable, there are 4 rows, 1 for the continuous “category”, 1 for not applicable, 1 for missing, and 1 for else. However, CCHS 2001 and 2003 code not applicable and the missing categories differently from other cycles so two extra rows will be created to account for this. In many instances there are changes in how variable categories are coded between CCHS cycles. But since the overall variable structure remains intact, extra rows can be used to help rectify this issue to make sure all values feed into the newly transformed variable.

Columns

  1. variable: the most common variable name for BMI is HWTGBMI. This should be written for each row.
variable
HWTGBMI
HWTGBMI
HWTGBMI
HWTGBMI
HWTGBMI
HWTGBMI
  1. dummyVariable: BMI is a continuous variable, so it does not have dummy variables.
variable dummyVariable
HWTGBMI N/A
HWTGBMI N/A
HWTGBMI N/A
HWTGBMI N/A
HWTGBMI N/A
HWTGBMI N/A
  1. toType: BMI was captured in the CCHS as a continuous variable. It does not make much sense to transform it into a categorical variable, so the toType should be cont in each row of BMI.
variable dummyVariable toType
HWTGBMI N/A cont
HWTGBMI N/A cont
HWTGBMI N/A cont
HWTGBMI N/A cont
HWTGBMI N/A cont
HWTGBMI N/A cont
  1. databaseStart: BMI was captured in all CCHS surveys between 2001 and 2018, so in the first row with the continuous “category” and the else row, the CCHS identifiers will be listed this column:
variable dummyVariable toType databaseStart
1 HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p
6 HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p
  • For the not applicable and missing rows that pertain to the 2001 and 2003 CCHS surveys, only write the 2001 and 2003 identifiers in this column.
variable dummyVariable toType databaseStart
2 HWTGBMI N/A cont cchs2001_p, cchs2003_p
3 HWTGBMI N/A cont cchs2001_p, cchs2003_p
  • For the not applicable and missing rows that pertain to the 2005 CCHS survey and onwards, write the identifiers for CCHS 2005 onwards. This is because the not applicable category and the missing categories are coded differently.
variable dummyVariable toType databaseStart
4 HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p
5 HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p
  1. variableStart: In the 2001, 2003, and 2005 CCHS surveys the BMI variable differs from the common name, while in the CCHS surveys from 2007-2018, the BMI variable is the same as the common name. However, the values for not applicable and missing categories changes after 2003. Therefore for the first & else rows, the variableStart column will look like this:
variable dummyVariable toType databaseStart variableStart
1 HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI]
6 HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI]
  • For the not applicable and missing rows that pertain to the 2001 and 2003 CCHS surveys, the variable names for those two cycles will be written.
variable dummyVariable toType databaseStart variableStart
2 HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI
3 HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI
  • For the not applicable and missing rows that pertain to the 2005 CCHS surveys onwards, the column will look like this:
variable dummyVariable toType databaseStart variableStart
4 HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI]
5 HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI]
  1. fromType: As mentioned previously, BMI was measured as a continuous variable in the CCHS, so the fromType should be cont in each row of BMI.
variable dummyVariable toType databaseStart variableStart fromType
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont
  1. recTo: Since this is a continuous variable, the first row (the main “category”) has copy written. For the not applicable rows NA::a is written. For the missing and else rows NA::b is written. The haven package is used for tagging NA in numeric variables.
variable dummyVariable toType databaseStart variableStart fromType recTo
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b
  1. numValidCat: Since this is a continuous variable, there are no actual categories; so N/A is written in each row.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A
  1. catLabel: For the first row BMI is written. Not applicable rows not applicable is written. Missing rows: missing. Else row: else
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else
  1. catLabelLong: For the first row, body mass index is written to give further detail on what BMI is. The other rows remain the same.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else
  1. units: BMI is measured in kg/m2, so kg/m2 is written in each row.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2
  1. recFrom: Going through the CCHS data documentation from 2001 to 2018, it was found that the lowest BMI value was 11.91 and the highest BMI value was 57.9. Therefore the recFrom for the first row is written as [11.91,57.9]. In the 2001 and 2003 CCHS surveys not applicable was coded as 999.6 so the recFrom for this row would be [999.6,999.6]. Similarly, in the 2001 and 2003 CCHS surveys don’t know was coded as 999.7, refusal was coded as 999.8, and not stated was coded as 999.9. Therefore the recFrom for the missing row for CCHS 2001 and 2003 would be [999.7,999.9]. In the not applicable row for the 2005 CCHS survey onwards, the recFrom is [999.96,999.96]. In the missing row for CCHS 2005 onwards, the recFrom is [999.97,999.99]. For the else row, just write else.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2 [11.91,57.9]
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2 999.6
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2 [999.7,999.9]
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2 999.96
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2 [999.97,999.99]
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2 else
  1. catStartLabel: For the first row, BMI / self-report (D,G) is written as it is written in CCHS documentation. The other rows remain the same, and the values for each missing category are stated in the missing rows.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2 [11.91,57.9] BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2 999.6 Not applicable
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2 [999.7,999.9] don’t know (999.7); refusal (999.8); not stated (999.9)
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2 999.96 Not applicable
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2 [999.97,999.99] don’t know (999.97); refusal (999.98); not stated (999.99)
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2 else else
  1. variableStartShortLabel: Writing BMI for each row is sufficient for this variable.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2 [11.91,57.9] BMI / self-report - (D,G) BMI
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2 999.6 Not applicable BMI
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2 [999.7,999.9] don’t know (999.7); refusal (999.8); not stated (999.9) BMI
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2 999.96 Not applicable BMI
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2 [999.97,999.99] don’t know (999.97); refusal (999.98); not stated (999.99) BMI
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2 else else BMI
  1. variableStartLabel: As per CCHS documentation, the label for this variable is BMI / self-report - (D,G).
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2 [11.91,57.9] BMI / self-report - (D,G) BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2 999.6 Not applicable BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2 [999.7,999.9] don’t know (999.7); refusal (999.8); not stated (999.9) BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2 999.96 Not applicable BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2 [999.97,999.99] don’t know (999.97); refusal (999.98); not stated (999.99) BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2 else else BMI BMI / self-report - (D,G)
  1. notes: As described previously, there are differences between CCHS surveys with regards to coding the not applicable and missing categories. These are documented in this section. Aside from this, there are other changes and differences that should also be documented. In the 2001 CCHS survey, this variable was restricted to participants aged 20-64. As well, don’t know (999.97) and refusal (999.98) were not asked in this survey.
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel notes
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont copy N/A BMI Body Mass Index kg/m2 [11.91,57.9] BMI / self-report - (D,G) BMI BMI / self-report - (D,G) CCHS 2001 restricts BMI to ages 20-64. Consider using using HWTGBMI_der for the most concistent BMI variable across all CCHS cycles. See documentation for BMI_fun() in derived variables for more details, or type ?BMI_fun in the console.
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::a N/A not applicable not applicable kg/m2 999.6 Not applicable BMI BMI / self-report - (D,G) CCHS 2001 and 2003 codes not applicable and missing variables as 999.6 and 999.7-999.9 respectively, while CCHS 2005 onwards codes not applicable and missing variables as 999.96 and 999.7-999.99 respectively
HWTGBMI N/A cont cchs2001_p, cchs2003_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI cont NA::b N/A missing missing kg/m2 [999.7,999.9] don’t know (999.7); refusal (999.8); not stated (999.9) BMI BMI / self-report - (D,G) Don’t know (999.7) and refusal (999.8) not included in 2001 CCHS
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::a N/A not applicable not applicable kg/m2 999.96 Not applicable BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A missing missing kg/m2 [999.97,999.99] don’t know (999.97); refusal (999.98); not stated (999.99) BMI BMI / self-report - (D,G)
HWTGBMI N/A cont cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI] cont NA::b N/A else else kg/m2 else else BMI BMI / self-report - (D,G)

Specifying the variable on variables.csv

Once mapped and specified on variable_details.csv, the BMI variable can now be specified on variables.csv

variable label labelLong section subject variableType units databaseStart variableStart
HWTGBMI BMI BMI / self-report - (D,G) Health status BMI Continuous kg/m2 cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2001_p::HWTAGBMI, cchs2003_p::HWTCGBMI, cchs2005_p::HWTEGBMI, [HWTGBMI]

How to create derived variables and add them to cchsflow

Along with specifying the variable on variable_details.csv and variables.csv, a previous step is required in creating derived variables and that is creating a custom function that creates the derived variable from existing CCHS variables.

CustomFunctionName <- function(Vars from variableStart following same order){
  outputVar <- {Code on passed vars that generates a single value output}
  
  return(outputVar)
}

Example of a derived variable: Smoking pack-years

Pack-years is a complex derived variable often used by researchers to quantify the amount of cigarette use over a period of time. Even given its complex nature, pack-years can still be calculated. This derived variable incorporates numerous CCHS smoking variables, along with age.

Step 1. Creating a derived function

With complex derived variables, sometimes it is necessary to create functions within the custom function. For pack-years, a nested function was used to create an intermediate smoking variable that was used in the main function.

Pack_years_fun <-
  function(SMKDSTY, DHHGAGE_cont, SMK_09A_B, SMKG09C, SMKG203_cont, SMKG207_cont,
           SMK_204, SMK_05B, SMK_208, SMK_05C, SMKG01C_cont, SMK_01A) {
    #Time since quit for former daily smokers
    tsq_ds_fun <- function(SMK_09A_B, SMKG09C) {
      SMKG09C <-
        ifelse2(SMKG09C==1, 4,
        ifelse2(SMKG09C==2, 8,
        ifelse2(SMKG09C==3, 12, NA)))
      tsq_ds <-
        ifelse2(SMK_09A_B==1, 0.5,
        ifelse2(SMK_09A_B==2, 1.5,
        ifelse2(SMK_09A_B==3, 2.5,
        ifelse2(SMK_09A_B==4, SMKG09C, NA))))
    }
    tsq_ds<-tsq_ds_fun(SMK_09A_B, SMKG09C)
    # PackYears for Daily Smoker
    ifelse2(SMKDSTY==1, pmax(((DHHGAGE_cont - SMKG203_cont)*(SMK_204/20)), 0.0137),
    # PackYears for Occasional Smoker (former daily)     
    ifelse2(SMKDSTY==2, pmax(((DHHGAGE_cont - SMKG207_cont - tsq_ds)*(SMK_208/20)), 0.0137) 
            + (pmax((SMK_05B*SMK_05C/30), 1)*tsq_ds),
    # PackYears for Occasional Smoker (never daily)      
    ifelse2(SMKDSTY==3, (pmax((SMK_05B*SMK_05C/30), 1)/20)*(DHHGAGE_cont - SMKG01C_cont),
    # PackYears for former daily smoker (non-smoker now)      
    ifelse2(SMKDSTY==4, pmax(((DHHGAGE_cont - SMKG207_cont - tsq_ds)*(SMK_208/20)), 0.0137),
    # PackYears for former occasional smoker (non-smoker now) who smoked at least 100 cigarettes lifetime      
    ifelse2(SMKDSTY==5 & SMK_01A==1, 0.0137,
    # PackYears for former occasional smoker (non-smoker now) who have not smoked at least 100 cigarettes lifetime      
    ifelse2(SMKDSTY==5 & SMK_01A==2, 0.007,
    # Non-smoker      
    ifelse2(SMKDSTY==6, 0, NA)))))))
  }

More information on what each smoking variable means can be found in the Reference section.

Steps 2 and 3. Specifying pack-years in variable_details.csv and variables.csv

This is how the variable_details.csv sheet would look for the derived pack-years row
variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel notes
9 pack_years_der N/A cont cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[SMKDSTY, DHHGAGE_cont, SMK_09A_B, SMKG09C, SMKG203_cont, SMKG207_cont, SMK_204, SMK_05B, SMK_208, SMK_05C, SMKG01C_cont, SMK_01A] N/A Func::pack_years_fun N/A N/A N/A Years N/A N/A Smoking pack-years Smoking pack-years PackYears variable derived from various harmonized smoking variables

And this is how the variables.csv sheet would look for the derived pack-years row

variable label labelLong section subject variableType units databaseStart variableStart
3 pack_years_der PackYears Smoking pack-years Health behaviour Smoking Continuous Years cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[SMKDSTY, DHHGAGE_cont, SMK_09A_B, SMKG09C, SMKG203_cont, SMKG207_cont, SMK_204, SMK_05B, SMK_208, SMK_05C, SMKG01C_cont, SMK_01A]

Adding labels to a derived variable

For a continuous derived variable like pack-years, the labels specified in variables.csv are sufficient for the variable to be properly labelled. For categorical derived variables, extra rows will need to be added on variable_details.csv so that labels are generated for each category. The example below shows how binge_drinker, a derived categorical variable flagging respondents who binge drink, is specified in variable_details.csv.

variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel notes
10 binge_drinker N/A cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[DHH_SEX, ALW_2A1, ALW_2A2, ALW_2A3, ALW_2A4, ALW_2A5, ALW_2A6, ALW_2A7] N/A Func::binge_drinker_fun N/A N/A N/A N/A N/A N/A Binge Drinker Binge Drinker Derived from DHH_SEX, ALW_2A1, ALW_2A2, ALW_2A3, ALW_2A4, ALW_2A5, ALW_2A6, ALW_2A7
11 binge_drinker N/A cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[DHH_SEX, ALW_2A1, ALW_2A2, ALW_2A3, ALW_2A4, ALW_2A5, ALW_2A6, ALW_2A7] N/A 1 2 Binge drinker Binge drinker N/A N/A Binge drinker Binge Drinker Binge Drinker
12 binge_drinker N/A cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[DHH_SEX, ALW_2A1, ALW_2A2, ALW_2A3, ALW_2A4, ALW_2A5, ALW_2A6, ALW_2A7] N/A 2 2 Regular drinker Regular drinker N/A N/A Regular drinker Binge Drinker Binge Drinker

As you can see, the first row for binge_drinker specifies the function for the derived variable and the base variables included. The second and third rows specify the categories of the variables, which are then labelled.

Creating a derived variable using derived variables

It is possible to create a derived variable that involves derived variables. When creating the custom function for it, use the derived variable name inside the function. Similarly, when specifying the variable in variable_details.csv and variables.csv, use the derived variable in the variableStart column. The example below shows how number_conditions, a derived categorical variable that counts the number of chronic conditions that uses the derived respiratory condition variable, is specified in variable_details.csv and variables.csv.

variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel notes
13 number_conditions number_conditions_catN/A_Func::multiple_conditions_fun1 cat cchs2001_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, resp_condition_der, CCC_051] N/A Func::multiple_conditions_fun1 N/A N/A N/A N/A N/A N/A Number of chronic conditions Number of chronic conditions This variable is derived from CCC_121, CCC_131, CCC_151, CCC_171, resp_condition, CCC_050
14 number_conditions number_conditions_catN/A_Func::multiple_conditions_fun2 cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A Func::multiple_conditions_fun2 N/A N/A N/A N/A N/A N/A Number of chronic conditions Number of chronic conditions This variable is derived from CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition, CCC_051
15 number_conditions number_conditions_cat6_0 cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2011_2012_p, cchs2013_2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 0 6 0 0 N/A N/A 0 Number of chronic conditions Number of chronic conditions
16 number_conditions number_conditions_cat6_1 cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 1 6 1 1 N/A N/A 1 Number of chronic conditions Number of chronic conditions
17 number_conditions number_conditions_cat6_2 cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 2 6 2 2 N/A N/A 2 Number of chronic conditions Number of chronic conditions
18 number_conditions number_conditions_cat6_3 cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 3 6 3 3 N/A N/A 3 Number of chronic conditions Number of chronic conditions
19 number_conditions number_conditions_cat6_4 cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 4 6 4 4 N/A N/A 4 Number of chronic conditions Number of chronic conditions
20 number_conditions number_conditions_cat6_5+ cat cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051] N/A 5+ 6 5+ 5+ N/A N/A 5+ Number of chronic conditions Number of chronic conditions
variable label labelLong section subject variableType units databaseStart variableStart
4 number_conditions Number of conditions Number of chronic conditions Health status Chronic conditions Categorical N/A cchs2001_p, cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, resp_condition_der, CCC_051], DerivedVar::[CCC_121, CCC_131, CCC_151, CCC_171, CCC_280, resp_condition_der, CCC_051]

Creating a derived variable that exists in other CCHS cycles

In order to harmonize a variable across all cycles, you may need to create a derived variable for the years in which the variable is not present. An example of this is RACDPAL, a variable that was derived from 2003 to 2018. To create and specify RACDPAL for 2001, the same derived variable conventions apply with a few slight differences. In variables.csv, the DerivedVar is enclosed with the database in which it is derived.

variableStart
cchs2001_p::[DerivedVar::[RAC_1, RAC_2A, RAC_2B, RAC_2C]], cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL]

This is to specify that for the 2001 CCHS cycle, it is derived from those base variables; while in later cycles it is simply recoded from the database.

In variable_details.csv, additional rows are created for the 2001 cycle so that rec_with_table() understands that in 2001 it will be derived from base variables, while in later cycles it is a simple recode.

variable dummyVariable toType databaseStart variableStart fromType recTo numValidCat catLabel catLabelLong units recFrom catStartLabel variableStartShortLabel variableStartLabel notes
21 RACDPAL N/A cat cchs2001_p DerivedVar::[RAC_1, RAC_2A, RAC_2B, RAC_2C] N/A Func::RACDPAL_fun N/A N/A N/A N/A N/A N/A Participation and activity limitation Participation and activity limitation
22 RACDPAL N/A cat cchs2001_p DerivedVar::[RAC_1, RAC_2A, RAC_2B, RAC_2C] N/A 1 3 Sometimes Sometimes N/A N/A Sometimes Participation and activity limitation Participation and activity limitation
23 RACDPAL N/A cat cchs2001_p DerivedVar::[RAC_1, RAC_2A, RAC_2B, RAC_2C] N/A 2 3 Often Often N/A N/A Often Participation and activity limitation Participation and activity limitation
24 RACDPAL N/A cat cchs2001_p DerivedVar::[RAC_1, RAC_2A, RAC_2B, RAC_2C] N/A 3 3 Never Never N/A N/A Never Participation and activity limitation Participation and activity limitation
25 RACDPAL RACDPAL_cat3_1 cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat 1 3 Sometimes Sometimes N/A 1 Sometimes Participation and activity limitation Participation and activity limitation
26 RACDPAL RACDPAL_cat3_2 cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat 2 3 Often Often N/A 2 Often Participation and activity limitation Participation and activity limitation
27 RACDPAL RACDPAL_cat3_3 cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat 3 3 Never Never N/A 3 Never Participation and activity limitation Participation and activity limitation
28 RACDPAL RACDPAL_cat3_NA::a cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat NA::a 3 not applicable not applicable N/A 6 not applicable Participation and activity limitation Participation and activity limitation
29 RACDPAL RACDPAL_cat3_NA::b cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat NA::b 3 missing missing N/A [7,9] don’t know (7); refusal (8); not stated (9) Participation and activity limitation Participation and activity limitation
30 RACDPAL RACDPAL_cat3_NA::b cat cchs2003_p, cchs2005_p, cchs2007_2008_p, cchs2009_2010_p, cchs2010_p, cchs2011_2012_p, cchs2012_p, cchs2013_2014_p, cchs2014_p cchs2003_p::RACCDPAL, cchs2005_p::RACEDPAL, [RACDPAL] cat NA::b 3 missing missing N/A else else Participation and activity limitation Participation and activity limitation