This function processes age data in a survey object. It imputes ages from ranges, handles missing values, and assigns age groups.
Arguments
- survey
a
survey()object- age_limits
lower limits of the age groups over which to construct the matrix. Defaults to NULL. If NULL, age limits are inferred from participant and contact ages.
- contact_age_limits
lower limits of the age groups to bin contact ages into. Defaults to NULL, meaning contacts use the same groups as participants (a square matrix). Set it to bin contacts into different groups (e.g. finer), producing an asymmetric
age.group/contact.age.groupmatrix. Such matrices are contact matrices only:symmetrise(),split_matrix()andper_capita()require reciprocity and so need the participant and contact groups to match.- estimated_participant_age
if set to "mean" (default), people whose ages are given as a range (in columns named "..._est_min" and "..._est_max") but not exactly (in a column named "..._exact") will have their age set to the mid-point of the range; if set to "sample", the age will be sampled from the range; if set to "missing", age ranges will be treated as missing
- estimated_contact_age
if set to "mean" (default), contacts whose ages are given as a range (in columns named "..._est_min" and "..._est_max") but not exactly (in a column named "..._exact") will have their age set to the mid-point of the range; if set to "sample", the age will be sampled from the range; if set to "missing", age ranges will be treated as missing
- missing_participant_age
if set to "remove" (default), participants without age information are removed; if set to "keep", participants with missing age are kept and treated as a separate age group
- missing_contact_age
if set to "remove" (default), participants that have contacts without age information are removed; if set to "keep", contacts with missing age are kept and treated as a separate age group; if set to "ignore", contacts with missing age are ignored in the contact analysis. The "sample" option is defunct (errors). For contacts that have only an age range (rather than a truly missing age),
estimated_contact_agecontrols how the range is resolved into a single age; it is not a substitute formissing_contact_agewhen the age is entirely missing.
Examples
polymod_grouped <- assign_age_groups(polymod)
polymod_grouped
#> $participants
#> Key: <lower.age.limit>
#> lower.age.limit hh_id part_id part_gender part_occupation
#> <num> <char> <int> <char> <int>
#> 1: 0 Mo08HH1127 1127 M 1
#> 2: 0 Mo08HH1128 1128 F 1
#> 3: 0 Mo08HH1129 1129 M 6
#> 4: 0 Mo08HH1130 1130 F 6
#> 5: 0 Mo08HH1131 1131 F 5
#> ---
#> 7194: 84 Mo08HH7910 7910 M 2
#> 7195: 85 Mo08HH1155 1155 F 2
#> 7196: 85 Mo08HH1367 1367 M 2
#> 7197: 85 Mo08HH3114 3114 M 2
#> 7198: 90 Mo08HH3743 3743 M 2
#> part_occupation_detail part_education part_education_length
#> <int> <int> <int>
#> 1: 8 2 12
#> 2: 6 3 13
#> 3: NA 2 12
#> 4: NA 2 12
#> 5: NA 2 12
#> ---
#> 7194: NA 7 15
#> 7195: 6 8 10
#> 7196: 7 8 10
#> 7197: NA 3 13
#> 7198: NA 1 8
#> participant_school_year participant_nationality child_care
#> <int> <char> <char>
#> 1: NA N
#> 2: NA N
#> 3: NA N
#> 4: NA N
#> 5: NA N
#> ---
#> 7194: NA BE
#> 7195: NA
#> 7196: NA
#> 7197: NA LU
#> 7198: NA PL
#> child_care_detail child_relationship child_nationality problems diary_how
#> <int> <int> <char> <char> <int>
#> 1: NA 2 1
#> 2: NA 1 1
#> 3: NA 1 1
#> 4: NA 1 1
#> 5: NA 1 NA
#> ---
#> 7194: NA NA N 1
#> 7195: NA NA 1
#> 7196: NA NA 1
#> 7197: NA NA N 2
#> 7198: NA NA N 2
#> diary_missed_unsp diary_missed_skin diary_missed_noskin sday_id type
#> <int> <int> <int> <int> <int>
#> 1: NA NA NA 20060206 3
#> 2: NA NA NA 20060704 3
#> 3: NA NA NA 20060526 3
#> 4: NA NA NA 20060116 3
#> 5: NA NA NA 20060522 3
#> ---
#> 7194: 1 NA NA 20060406 1
#> 7195: NA NA NA 20060117 1
#> 7196: NA NA NA 20060119 1
#> 7197: 1 NA NA 20050512 1
#> 7198: 1 NA NA 20060329 1
#> day month year dayofweek hh_age_1 hh_age_2 hh_age_3 hh_age_4 hh_age_5
#> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1: 6 2 2006 1 1 21 31 NA NA
#> 2: 4 7 2006 2 1 29 32 NA NA
#> 3: 26 5 2006 5 NA 2 2 22 28
#> 4: 16 1 2006 1 1 18 21 NA NA
#> 5: 22 5 2006 1 1 12 16 44 46
#> ---
#> 7194: 6 4 2006 4 NA NA NA NA NA
#> 7195: 17 1 2006 2 85 NA NA NA NA
#> 7196: 19 1 2006 4 82 85 NA NA NA
#> 7197: 12 5 2005 4 NA NA NA NA NA
#> 7198: 29 3 2006 3 23 26 59 61 NA
#> hh_age_6 hh_age_7 hh_age_8 hh_age_9 hh_age_10 hh_age_11 hh_age_12
#> <int> <int> <int> <int> <int> <int> <int>
#> 1: NA NA NA NA NA NA NA
#> 2: NA NA NA NA NA NA NA
#> 3: NA NA NA NA NA NA NA
#> 4: NA NA NA NA NA NA NA
#> 5: NA NA NA NA NA NA NA
#> ---
#> 7194: NA NA NA NA NA NA NA
#> 7195: NA NA NA NA NA NA NA
#> 7196: NA NA NA NA NA NA NA
#> 7197: NA NA NA NA NA NA NA
#> 7198: NA NA NA NA NA NA NA
#> hh_age_13 hh_age_14 hh_age_15 hh_age_16 hh_age_17 hh_age_18 hh_age_19
#> <int> <int> <int> <lgcl> <lgcl> <lgcl> <lgcl>
#> 1: NA NA NA NA NA NA NA
#> 2: NA NA NA NA NA NA NA
#> 3: NA NA NA NA NA NA NA
#> 4: NA NA NA NA NA NA NA
#> 5: NA NA NA NA NA NA NA
#> ---
#> 7194: NA NA NA NA NA NA NA
#> 7195: NA NA NA NA NA NA NA
#> 7196: NA NA NA NA NA NA NA
#> 7197: NA NA NA NA NA NA NA
#> 7198: NA NA NA NA NA NA NA
#> hh_age_20 class_size country hh_size part_age_exact part_age age.group
#> <lgcl> <int> <fctr> <int> <int> <int> <fctr>
#> 1: NA NA Germany 3 0 0 [0,1)
#> 2: NA NA Germany 3 0 0 [0,1)
#> 3: NA NA Germany 4 0 0 [0,1)
#> 4: NA NA Germany 3 0 0 [0,1)
#> 5: NA NA Germany 5 0 0 [0,1)
#> ---
#> 7194: NA NA Belgium 1 84 84 [84,85)
#> 7195: NA NA Germany 1 85 85 [85,86)
#> 7196: NA NA Germany 2 85 85 [85,86)
#> 7197: NA NA Luxembourg 1 85 85 [85,86)
#> 7198: NA NA Poland 5 90 90 [90,91)
#> upper.age.limit
#> <num>
#> 1: 1
#> 2: 1
#> 3: 1
#> 4: 1
#> 5: 1
#> ---
#> 7194: 85
#> 7195: 86
#> 7196: 86
#> 7197: 86
#> 7198: 91
#>
#> $contacts
#> cont_id part_id cnt_age_exact cnt_age_est_min cnt_age_est_max cnt_gender
#> <int> <int> <int> <int> <int> <char>
#> 1: 1 1 42 NA NA F
#> 2: 2 1 9 NA NA F
#> 3: 3 1 NA 40 45 F
#> 4: 4 1 8 NA NA F
#> 5: 5 1 NA 28 30 F
#> ---
#> 97900: 97900 8001 11 NA NA F
#> 97901: 97901 8001 3 NA NA M
#> 97902: 97902 8001 43 NA NA F
#> 97903: 97903 8001 33 NA NA F
#> 97904: 97904 8001 15 NA NA F
#> cnt_home cnt_work cnt_school cnt_transport cnt_leisure cnt_otherplace
#> <int> <int> <int> <int> <int> <int>
#> 1: 1 0 0 0 0 0
#> 2: 0 0 1 0 0 0
#> 3: 0 0 0 0 1 0
#> 4: 0 0 1 0 0 0
#> 5: 0 0 1 0 0 0
#> ---
#> 97900: 1 0 0 0 0 0
#> 97901: 1 0 0 0 0 0
#> 97902: 1 0 0 0 0 0
#> 97903: 0 0 0 0 0 1
#> 97904: 0 0 0 0 1 0
#> frequency_multi phys_contact duration_multi cnt_age contact.age.group
#> <int> <int> <int> <int> <fctr>
#> 1: 1 1 4 42 [42,43)
#> 2: 1 1 5 9 [9,10)
#> 3: 3 1 4 42 [42,43)
#> 4: 1 1 5 8 [8,9)
#> 5: 2 1 3 29 [29,30)
#> ---
#> 97900: 1 1 5 11 [11,12)
#> 97901: 1 1 5 3 [3,4)
#> 97902: 1 1 5 43 [43,44)
#> 97903: 4 1 3 33 [33,34)
#> 97904: 3 1 4 15 [15,16)
#>
#> $reference
#> $reference$title
#> [1] "POLYMOD social contact data"
#>
#> $reference$bibtype
#> [1] "Misc"
#>
#> $reference$author
#> [1] "Joël Mossong" "Niel Hens"
#> [3] "Mark Jit" "Philippe Beutels"
#> [5] "Kari Auranen" "Rafael Mikolajczyk"
#> [7] "Marco Massari" "Stefania Salmaso"
#> [9] "Gianpaolo Scalia Tomba" "Jacco Wallinga"
#> [11] "Janneke Heijne" "Malgorzata Sadkowska-Todys"
#> [13] "Magdalena Rosinska" "W. John Edmunds"
#>
#> $reference$year
#> [1] 2017
#>
#> $reference$note
#> [1] "Version 1.1"
#>
#> $reference$doi
#> [1] "10.5281/zenodo.1157934"
#>
#>
#> attr(,"class")
#> [1] "contact_survey"
polymod_custom <- assign_age_groups(polymod, age_limits = c(0, 5, 10, 15))
polymod_custom
#> $participants
#> Key: <lower.age.limit>
#> lower.age.limit hh_id part_id part_gender part_occupation
#> <num> <char> <int> <char> <int>
#> 1: 0 Mo08HH10 10 F 6
#> 2: 0 Mo08HH101 101 F 5
#> 3: 0 Mo08HH102 102 M 6
#> 4: 0 Mo08HH103 103 M 5
#> 5: 0 Mo08HH1053 1053 F 5
#> ---
#> 7194: 15 Mo08HH869 869 F 3
#> 7195: 15 Mo08HH870 870 F 1
#> 7196: 15 Mo08HH871 871 F 5
#> 7197: 15 Mo08HH872 872 F 1
#> 7198: 15 Mo08HH873 873 F 5
#> part_occupation_detail part_education part_education_length
#> <int> <int> <int>
#> 1: 7 5 16
#> 2: 7 3 11
#> 3: NA 6 18
#> 4: NA 3 13
#> 5: NA 1 10
#> ---
#> 7194: 6 8 10
#> 7195: 8 2 12
#> 7196: NA 8 10
#> 7197: 7 8 10
#> 7198: NA 8 10
#> participant_school_year participant_nationality child_care
#> <int> <char> <char>
#> 1: NA IT N
#> 2: NA IT Y
#> 3: NA IT N
#> 4: NA IT Y
#> 5: NA Y
#> ---
#> 7194: NA Y
#> 7195: NA N
#> 7196: NA Y
#> 7197: NA Y
#> 7198: NA Y
#> child_care_detail child_relationship child_nationality problems diary_how
#> <int> <int> <char> <char> <int>
#> 1: NA 1 IT N 1
#> 2: NA 2 IT N 2
#> 3: NA 1 IT NA
#> 4: NA 1 IT N 2
#> 5: NA 3 NA
#> ---
#> 7194: NA NA 1
#> 7195: NA 2 1
#> 7196: NA NA 1
#> 7197: NA NA 1
#> 7198: NA 1 NA
#> diary_missed_unsp diary_missed_skin diary_missed_noskin sday_id type
#> <int> <int> <int> <int> <int>
#> 1: 1 NA NA 20060525 3
#> 2: 2 NA NA 20060525 3
#> 3: NA NA NA 20060526 3
#> 4: 3 NA NA 20060526 3
#> 5: NA NA NA 20060116 3
#> ---
#> 7194: NA NA NA 20060118 3
#> 7195: NA NA NA 20060117 3
#> 7196: NA NA NA 20060707 3
#> 7197: NA NA NA 20060522 3
#> 7198: NA NA NA 20060529 3
#> day month year dayofweek hh_age_1 hh_age_2 hh_age_3 hh_age_4 hh_age_5
#> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1: 25 5 2006 4 0 3 40 NA NA
#> 2: 25 5 2006 4 4 12 17 43 NA
#> 3: 26 5 2006 5 1 3 44 NA NA
#> 4: 26 5 2006 5 2 3 33 NA NA
#> 5: 16 1 2006 1 4 14 18 40 42
#> ---
#> 7194: 18 1 2006 3 15 30 32 NA NA
#> 7195: 17 1 2006 2 15 37 37 NA NA
#> 7196: 7 7 2006 5 15 19 46 48 NA
#> 7197: 22 5 2006 1 15 36 38 NA NA
#> 7198: 29 5 2006 1 15 24 47 60 NA
#> hh_age_6 hh_age_7 hh_age_8 hh_age_9 hh_age_10 hh_age_11 hh_age_12
#> <int> <int> <int> <int> <int> <int> <int>
#> 1: NA NA NA NA NA NA NA
#> 2: NA NA NA NA NA NA NA
#> 3: NA NA NA NA NA NA NA
#> 4: NA NA NA NA NA NA NA
#> 5: NA NA NA NA NA NA NA
#> ---
#> 7194: NA NA NA NA NA NA NA
#> 7195: NA NA NA NA NA NA NA
#> 7196: NA NA NA NA NA NA NA
#> 7197: NA NA NA NA NA NA NA
#> 7198: NA NA NA NA NA NA NA
#> hh_age_13 hh_age_14 hh_age_15 hh_age_16 hh_age_17 hh_age_18 hh_age_19
#> <int> <int> <int> <lgcl> <lgcl> <lgcl> <lgcl>
#> 1: NA NA NA NA NA NA NA
#> 2: NA NA NA NA NA NA NA
#> 3: NA NA NA NA NA NA NA
#> 4: NA NA NA NA NA NA NA
#> 5: NA NA NA NA NA NA NA
#> ---
#> 7194: NA NA NA NA NA NA NA
#> 7195: NA NA NA NA NA NA NA
#> 7196: NA NA NA NA NA NA NA
#> 7197: NA NA NA NA NA NA NA
#> 7198: NA NA NA NA NA NA NA
#> hh_age_20 class_size country hh_size part_age_exact part_age age.group
#> <lgcl> <int> <fctr> <int> <int> <int> <fctr>
#> 1: NA NA Italy 4 3 3 [0,5)
#> 2: NA NA Italy 5 4 4 [0,5)
#> 3: NA NA Italy 4 3 3 [0,5)
#> 4: NA NA Italy 4 3 3 [0,5)
#> 5: NA 15 Germany 5 4 4 [0,5)
#> ---
#> 7194: NA 26 Germany 3 15 15 [15,Inf)
#> 7195: NA NA Germany 3 15 15 [15,Inf)
#> 7196: NA 25 Germany 4 15 15 [15,Inf)
#> 7197: NA 17 Germany 3 15 15 [15,Inf)
#> 7198: NA 32 Germany 4 15 15 [15,Inf)
#> upper.age.limit
#> <num>
#> 1: 5
#> 2: 5
#> 3: 5
#> 4: 5
#> 5: 5
#> ---
#> 7194: 91
#> 7195: 91
#> 7196: 91
#> 7197: 91
#> 7198: 91
#>
#> $contacts
#> cont_id part_id cnt_age_exact cnt_age_est_min cnt_age_est_max cnt_gender
#> <int> <int> <int> <int> <int> <char>
#> 1: 1 1 42 NA NA F
#> 2: 2 1 9 NA NA F
#> 3: 3 1 NA 40 45 F
#> 4: 4 1 8 NA NA F
#> 5: 5 1 NA 28 30 F
#> ---
#> 97900: 97900 8001 11 NA NA F
#> 97901: 97901 8001 3 NA NA M
#> 97902: 97902 8001 43 NA NA F
#> 97903: 97903 8001 33 NA NA F
#> 97904: 97904 8001 15 NA NA F
#> cnt_home cnt_work cnt_school cnt_transport cnt_leisure cnt_otherplace
#> <int> <int> <int> <int> <int> <int>
#> 1: 1 0 0 0 0 0
#> 2: 0 0 1 0 0 0
#> 3: 0 0 0 0 1 0
#> 4: 0 0 1 0 0 0
#> 5: 0 0 1 0 0 0
#> ---
#> 97900: 1 0 0 0 0 0
#> 97901: 1 0 0 0 0 0
#> 97902: 1 0 0 0 0 0
#> 97903: 0 0 0 0 0 1
#> 97904: 0 0 0 0 1 0
#> frequency_multi phys_contact duration_multi cnt_age contact.age.group
#> <int> <int> <int> <int> <fctr>
#> 1: 1 1 4 42 [15,Inf)
#> 2: 1 1 5 9 [5,10)
#> 3: 3 1 4 42 [15,Inf)
#> 4: 1 1 5 8 [5,10)
#> 5: 2 1 3 29 [15,Inf)
#> ---
#> 97900: 1 1 5 11 [10,15)
#> 97901: 1 1 5 3 [0,5)
#> 97902: 1 1 5 43 [15,Inf)
#> 97903: 4 1 3 33 [15,Inf)
#> 97904: 3 1 4 15 [15,Inf)
#>
#> $reference
#> $reference$title
#> [1] "POLYMOD social contact data"
#>
#> $reference$bibtype
#> [1] "Misc"
#>
#> $reference$author
#> [1] "Joël Mossong" "Niel Hens"
#> [3] "Mark Jit" "Philippe Beutels"
#> [5] "Kari Auranen" "Rafael Mikolajczyk"
#> [7] "Marco Massari" "Stefania Salmaso"
#> [9] "Gianpaolo Scalia Tomba" "Jacco Wallinga"
#> [11] "Janneke Heijne" "Malgorzata Sadkowska-Todys"
#> [13] "Magdalena Rosinska" "W. John Edmunds"
#>
#> $reference$year
#> [1] 2017
#>
#> $reference$note
#> [1] "Version 1.1"
#>
#> $reference$doi
#> [1] "10.5281/zenodo.1157934"
#>
#>
#> attr(,"class")
#> [1] "contact_survey"