@@ -419,6 +419,9 @@ code_testing <- function(input_data, wave) {
419419
420420 if (" B13" %in% names(input_data )) {
421421 input_data $ t_had_covid_ever <- input_data $ B13 == 1
422+ } else if (" B13a" %in% names(input_data )) {
423+ # B13a, replacing B13 as of Wave 12, removes "As far as you know" wording.
424+ input_data $ t_had_covid_ever <- input_data $ B13a == 1
422425 } else {
423426 input_data $ t_had_covid_ever <- NA
424427 }
@@ -551,28 +554,41 @@ code_vaccines <- function(input_data, wave) {
551554 hesitancy_reasons <- split_options(hesitancy_reasons )
552555
553556 input_data $ v_hesitancy_reason_sideeffects <- is_selected(hesitancy_reasons , " 1" )
554- input_data $ v_hesitancy_reason_allergic <- is_selected(hesitancy_reasons , " 2" )
557+ input_data $ v_hesitancy_reason_allergic <- is_selected(hesitancy_reasons , " 2" ) # removed as of Wave 11
555558 input_data $ v_hesitancy_reason_ineffective <- is_selected(hesitancy_reasons , " 3" )
556559 input_data $ v_hesitancy_reason_unnecessary <- is_selected(hesitancy_reasons , " 4" )
557- input_data $ v_hesitancy_reason_dislike_vaccines <- is_selected(hesitancy_reasons , " 5" )
558- input_data $ v_hesitancy_reason_not_recommended <- is_selected(hesitancy_reasons , " 6" )
560+ input_data $ v_hesitancy_reason_dislike_vaccines <- is_selected(hesitancy_reasons , " 5" ) # removed as of Wave 12
561+ input_data $ v_hesitancy_reason_not_recommended <- is_selected(hesitancy_reasons , " 6" ) # removed as of Wave 11
559562 input_data $ v_hesitancy_reason_wait_safety <- is_selected(hesitancy_reasons , " 7" )
560563 input_data $ v_hesitancy_reason_low_priority <- is_selected(hesitancy_reasons , " 8" )
561564 input_data $ v_hesitancy_reason_cost <- is_selected(hesitancy_reasons , " 9" )
562- input_data $ v_hesitancy_reason_distrust_vaccines <- is_selected(hesitancy_reasons , " 10" )
565+ input_data $ v_hesitancy_reason_distrust_vaccines <- is_selected(hesitancy_reasons , " 10" ) # removed in Wave 11, reintroduced as of Wave 12
563566 input_data $ v_hesitancy_reason_distrust_gov <- is_selected(hesitancy_reasons , " 11" )
564- input_data $ v_hesitancy_reason_health_condition <- is_selected(hesitancy_reasons , " 12" )
567+ input_data $ v_hesitancy_reason_health_condition <- is_selected(hesitancy_reasons , " 12" ) # removed as of Wave 11
565568 input_data $ v_hesitancy_reason_other <- is_selected(hesitancy_reasons , " 13" )
566- input_data $ v_hesitancy_reason_pregnant <- is_selected(hesitancy_reasons , " 14" )
569+ input_data $ v_hesitancy_reason_pregnant <- is_selected(hesitancy_reasons , " 14" ) # removed as of Wave 11
567570 input_data $ v_hesitancy_reason_religious <- is_selected(hesitancy_reasons , " 15" )
571+ input_data $ v_hesitancy_reason_dislike_vaccines_generally <- is_selected(hesitancy_reasons , " 16" ) # replacing choice 5 as of Wave 12
568572
573+ # For waves before a given response choice existed, explicitly set the
574+ # derived field to missing since `is_selected` will return FALSE (meaning
575+ # "not selected") for them if the respondent selected at least once answer
576+ # choice.
569577 if (wave > = 11 ) {
570578 input_data $ v_hesitancy_reason_allergic <- NA
571579 input_data $ v_hesitancy_reason_not_recommended <- NA
572- input_data $ v_hesitancy_reason_distrust_vaccines <- NA
573580 input_data $ v_hesitancy_reason_health_condition <- NA
574581 input_data $ v_hesitancy_reason_pregnant <- NA
575582 }
583+ if (wave == 11 ) {
584+ input_data $ v_hesitancy_reason_distrust_vaccines <- NA
585+ }
586+ if (wave < 12 ) {
587+ input_data $ v_hesitancy_reason_dislike_vaccines_generally <- NA
588+ }
589+ if (wave > = 12 ) {
590+ input_data $ v_hesitancy_reason_dislike_vaccines <- NA
591+ }
576592
577593 } else {
578594 input_data $ v_hesitancy_reason_sideeffects <- NA_real_
@@ -590,6 +606,7 @@ code_vaccines <- function(input_data, wave) {
590606 input_data $ v_hesitancy_reason_other <- NA_real_
591607 input_data $ v_hesitancy_reason_pregnant <- NA_real_
592608 input_data $ v_hesitancy_reason_religious <- NA_real_
609+ input_data $ v_hesitancy_reason_dislike_vaccines_generally <- NA_real_
593610 }
594611
595612 if ( " V6" %in% names(input_data ) ) {
@@ -655,6 +672,43 @@ code_vaccines <- function(input_data, wave) {
655672 input_data $ v_vaccine_barrier_none <- NA
656673 }
657674
675+ if ( all(c(" V15c" , " V15b" ) %in% names(input_data )) ) {
676+ # V15c introduced in Wave 12, replacing V15a with clarified wording.
677+ vaccine_barriers <- coalesce(input_data $ V15c , input_data $ V15b )
678+ vaccine_barriers <- ifelse(vaccine_barriers == " 13" , NA , vaccine_barriers )
679+ vaccine_barriers <- split_options(vaccine_barriers )
680+
681+ input_data $ v_vaccine_barrier_eligible <- is_selected(vaccine_barriers , " 1" )
682+ input_data $ v_vaccine_barrier_no_appointments <- is_selected(vaccine_barriers , " 2" )
683+ input_data $ v_vaccine_barrier_appointment_time <- is_selected(vaccine_barriers , " 3" )
684+ input_data $ v_vaccine_barrier_technical_difficulties <- is_selected(vaccine_barriers , " 4" )
685+ input_data $ v_vaccine_barrier_document <- is_selected(vaccine_barriers , " 5" )
686+ input_data $ v_vaccine_barrier_technology_access <- is_selected(vaccine_barriers , " 6" )
687+ input_data $ v_vaccine_barrier_travel <- is_selected(vaccine_barriers , " 7" )
688+ input_data $ v_vaccine_barrier_language <- is_selected(vaccine_barriers , " 8" )
689+ input_data $ v_vaccine_barrier_childcare <- is_selected(vaccine_barriers , " 9" )
690+ input_data $ v_vaccine_barrier_time <- is_selected(vaccine_barriers , " 10" )
691+ input_data $ v_vaccine_barrier_type <- is_selected(vaccine_barriers , " 12" )
692+ input_data $ v_vaccine_barrier_none <- is_selected(vaccine_barriers , " 11" )
693+ input_data $ v_vaccine_barrier_appointment_location <- is_selected(vaccine_barriers , " 14" )
694+ input_data $ v_vaccine_barrier_other <- is_selected(vaccine_barriers , " 15" )
695+ } else {
696+ input_data $ v_vaccine_barrier_eligible <- NA
697+ input_data $ v_vaccine_barrier_no_appointments <- NA
698+ input_data $ v_vaccine_barrier_appointment_time <- NA
699+ input_data $ v_vaccine_barrier_technical_difficulties <- NA
700+ input_data $ v_vaccine_barrier_document <- NA
701+ input_data $ v_vaccine_barrier_technology_access <- NA
702+ input_data $ v_vaccine_barrier_travel <- NA
703+ input_data $ v_vaccine_barrier_language <- NA
704+ input_data $ v_vaccine_barrier_childcare <- NA
705+ input_data $ v_vaccine_barrier_time <- NA
706+ input_data $ v_vaccine_barrier_type <- NA
707+ input_data $ v_vaccine_barrier_none <- NA
708+ input_data $ v_vaccine_barrier_appointment_location <- NA
709+ input_data $ v_vaccine_barrier_other <- NA
710+ }
711+
658712 if ( " V15a" %in% names(input_data ) ) {
659713 # introduced in Wave 11
660714 vaccine_barriers <- split_options(input_data $ V15a )
@@ -686,6 +740,41 @@ code_vaccines <- function(input_data, wave) {
686740 input_data $ v_vaccine_barrier_none_has <- NA
687741 }
688742
743+ if ( " V15c" %in% names(input_data ) ) {
744+ # V15c introduced in Wave 12, replacing V15a with clarified wording.
745+ vaccine_barriers <- split_options(input_data $ V15c )
746+
747+ input_data $ v_vaccine_barrier_eligible_has <- is_selected(vaccine_barriers , " 1" )
748+ input_data $ v_vaccine_barrier_no_appointments_has <- is_selected(vaccine_barriers , " 2" )
749+ input_data $ v_vaccine_barrier_appointment_time_has <- is_selected(vaccine_barriers , " 3" )
750+ input_data $ v_vaccine_barrier_technical_difficulties_has <- is_selected(vaccine_barriers , " 4" )
751+ input_data $ v_vaccine_barrier_document_has <- is_selected(vaccine_barriers , " 5" )
752+ input_data $ v_vaccine_barrier_technology_access_has <- is_selected(vaccine_barriers , " 6" )
753+ input_data $ v_vaccine_barrier_travel_has <- is_selected(vaccine_barriers , " 7" )
754+ input_data $ v_vaccine_barrier_language_has <- is_selected(vaccine_barriers , " 8" )
755+ input_data $ v_vaccine_barrier_childcare_has <- is_selected(vaccine_barriers , " 9" )
756+ input_data $ v_vaccine_barrier_time_has <- is_selected(vaccine_barriers , " 10" )
757+ input_data $ v_vaccine_barrier_type_has <- is_selected(vaccine_barriers , " 12" )
758+ input_data $ v_vaccine_barrier_none_has <- is_selected(vaccine_barriers , " 11" )
759+ input_data $ v_vaccine_barrier_appointment_location_has <- is_selected(vaccine_barriers , " 14" )
760+ input_data $ v_vaccine_barrier_other_has <- is_selected(vaccine_barriers , " 15" )
761+ } else {
762+ input_data $ v_vaccine_barrier_eligible_has <- NA
763+ input_data $ v_vaccine_barrier_no_appointments_has <- NA
764+ input_data $ v_vaccine_barrier_appointment_time_has <- NA
765+ input_data $ v_vaccine_barrier_technical_difficulties_has <- NA
766+ input_data $ v_vaccine_barrier_document_has <- NA
767+ input_data $ v_vaccine_barrier_technology_access_has <- NA
768+ input_data $ v_vaccine_barrier_travel_has <- NA
769+ input_data $ v_vaccine_barrier_language_has <- NA
770+ input_data $ v_vaccine_barrier_childcare_has <- NA
771+ input_data $ v_vaccine_barrier_time_has <- NA
772+ input_data $ v_vaccine_barrier_type_has <- NA
773+ input_data $ v_vaccine_barrier_none_has <- NA
774+ input_data $ v_vaccine_barrier_appointment_location_has <- NA
775+ input_data $ v_vaccine_barrier_other_has <- NA
776+ }
777+
689778 if ( " V15b" %in% names(input_data ) ) {
690779 # introduced in Wave 11
691780 vaccine_barriers <- ifelse(input_data $ V15b == " 13" , NA , input_data $ V15b )
@@ -703,6 +792,17 @@ code_vaccines <- function(input_data, wave) {
703792 input_data $ v_vaccine_barrier_time_tried <- is_selected(vaccine_barriers , " 10" )
704793 input_data $ v_vaccine_barrier_type_tried <- is_selected(vaccine_barriers , " 12" )
705794 input_data $ v_vaccine_barrier_none_tried <- is_selected(vaccine_barriers , " 11" )
795+ input_data $ v_vaccine_barrier_appointment_location_tried <- is_selected(vaccine_barriers , " 14" )
796+ input_data $ v_vaccine_barrier_other_tried <- is_selected(vaccine_barriers , " 15" )
797+
798+ if (wave < 12 ) {
799+ # For waves before a given response choice existed, explicitly set the
800+ # derived field to missing since `is_selected` will return FALSE (meaning
801+ # "not selected") for them if the respondent selected at least once answer
802+ # choice.
803+ input_data $ v_vaccine_barrier_appointment_location_tried <- NA
804+ input_data $ v_vaccine_barrier_other_tried <- NA
805+ }
706806 } else {
707807 input_data $ v_vaccine_barrier_eligible_tried <- NA
708808 input_data $ v_vaccine_barrier_no_appointments_tried <- NA
@@ -716,6 +816,8 @@ code_vaccines <- function(input_data, wave) {
716816 input_data $ v_vaccine_barrier_time_tried <- NA
717817 input_data $ v_vaccine_barrier_type_tried <- NA
718818 input_data $ v_vaccine_barrier_none_tried <- NA
819+ input_data $ v_vaccine_barrier_appointment_location_tried <- NA
820+ input_data $ v_vaccine_barrier_other_tried <- NA
719821 }
720822
721823 if ( " E4" %in% names(input_data ) ) {
@@ -731,6 +833,22 @@ code_vaccines <- function(input_data, wave) {
731833 input_data $ v_vaccinate_children <- NA_real_
732834 }
733835
836+ if ( " P3" %in% names(input_data ) ) {
837+ # introduced in Wave 12, replacing E4
838+ # Yes definitely, Yes probably, Already vaccinated -> 1
839+ # No definitely not, No probably not -> 0
840+ input_data $ v_vaccinate_child_oldest <- case_when(
841+ input_data $ P3 == 1 ~ 1 ,
842+ input_data $ P3 == 2 ~ 1 ,
843+ input_data $ P3 == 3 ~ 0 ,
844+ input_data $ P3 == 4 ~ 0 ,
845+ input_data $ P3 == 5 ~ 1 ,
846+ TRUE ~ NA_real_
847+ )
848+ } else {
849+ input_data $ v_vaccinate_child_oldest <- NA_real_
850+ }
851+
734852 if ( " V16" %in% names(input_data ) ) {
735853 # introduced in Wave 11
736854 input_data $ v_try_vaccinate_1m <- case_when(
@@ -784,6 +902,25 @@ code_schooling <- function(input_data, wave) {
784902 } else {
785903 input_data $ s_inperson_school_parttime <- NA_real_
786904 }
905+
906+ if (" P5" %in% names(input_data )) {
907+ # Coded as 1 = in person classes, 2 = online/remote/distance, 3 = both/mix,
908+ # 4 = not in school
909+ input_data $ s_inperson_school_fulltime_oldest <- case_when(
910+ input_data $ P5 == 1 ~ 1 ,
911+ input_data $ P5 != 1 ~ 0 ,
912+ TRUE ~ NA_real_
913+ )
914+ input_data $ s_inperson_school_parttime_oldest <- case_when(
915+ input_data $ P5 == 3 ~ 1 ,
916+ input_data $ P5 != 3 ~ 0 ,
917+ TRUE ~ NA_real_
918+ )
919+
920+ } else {
921+ input_data $ s_inperson_school_fulltime_oldest <- NA_real_
922+ input_data $ s_inperson_school_parttime_oldest <- NA_real_
923+ }
787924
788925 return (input_data )
789926}
0 commit comments