diff --git a/ansible/templates/facebook-params-prod.json.j2 b/ansible/templates/facebook-params-prod.json.j2 index f7a0e6d0e..1ec4f18cf 100644 --- a/ansible/templates/facebook-params-prod.json.j2 +++ b/ansible/templates/facebook-params-prod.json.j2 @@ -37,6 +37,7 @@ "Survey of COVID-Like Illness - Wave 10": "fb-survey", "Survey of COVID-Like Illness - Wave 11": "fb-survey", "Survey of COVID-Like Illness - Wave 12": "fb-survey", + "Survey of COVID-Like Illness - Wave 12 - Full Launch": "fb-survey", "Survey of COVID-Like Illness - Wave 4": "fb-survey", "Survey of COVID-Like Illness - Wave 5": "fb-survey", "Survey of COVID-Like Illness - Wave 6": "fb-survey", diff --git a/facebook/delphiFacebook/R/binary.R b/facebook/delphiFacebook/R/binary.R index 983723a25..08305d375 100644 --- a/facebook/delphiFacebook/R/binary.R +++ b/facebook/delphiFacebook/R/binary.R @@ -129,6 +129,9 @@ get_binary_indicators <- function() { "smoothed_vaccinate_children", "weight_unif", "v_vaccinate_children", 6, compute_binary_response, jeffreys_binary, "smoothed_wvaccinate_children", "weight", "v_vaccinate_children", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccinate_child_oldest", "weight_unif", "v_vaccinate_child_oldest", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccinate_child_oldest", "weight", "v_vaccinate_child_oldest", 6, compute_binary_response, jeffreys_binary, + "smoothed_try_vaccinate_1m", "weight_unif", "v_try_vaccinate_1m", 6, compute_binary_response, jeffreys_binary, "smoothed_wtry_vaccinate_1m", "weight", "v_try_vaccinate_1m", 6, compute_binary_response, jeffreys_binary, @@ -193,7 +196,9 @@ get_binary_indicators <- function() { "smoothed_whesitancy_reason_pregnant", "weight", "v_hesitancy_reason_pregnant", 6, compute_binary_response, jeffreys_binary, "smoothed_hesitancy_reason_religious", "weight_unif", "v_hesitancy_reason_religious", 6, compute_binary_response, jeffreys_binary, "smoothed_whesitancy_reason_religious", "weight", "v_hesitancy_reason_religious", 6, compute_binary_response, jeffreys_binary, - + "smoothed_hesitancy_reason_dislike_vaccines_generally", "weight_unif", "v_hesitancy_reason_dislike_vaccines_generally", 6, compute_binary_response, jeffreys_binary, + "smoothed_whesitancy_reason_dislike_vaccines_generally", "weight", "v_hesitancy_reason_dislike_vaccines_generally", 6, compute_binary_response, jeffreys_binary, + # vaccine barriers "smoothed_vaccine_barrier_eligible", "weight_unif", "v_vaccine_barrier_eligible", 6, compute_binary_response, jeffreys_binary, "smoothed_wvaccine_barrier_eligible", "weight", "v_vaccine_barrier_eligible", 6, compute_binary_response, jeffreys_binary, @@ -219,6 +224,10 @@ get_binary_indicators <- function() { "smoothed_wvaccine_barrier_type", "weight", "v_vaccine_barrier_type", 6, compute_binary_response, jeffreys_binary, "smoothed_vaccine_barrier_none", "weight_unif", "v_vaccine_barrier_none", 6, compute_binary_response, jeffreys_binary, "smoothed_wvaccine_barrier_none", "weight", "v_vaccine_barrier_none", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_appointment_location", "weight_unif", "v_vaccine_barrier_appointment_location", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_appointment_location", "weight", "v_vaccine_barrier_appointment_location", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_other", "weight_unif", "v_vaccine_barrier_other", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_other", "weight", "v_vaccine_barrier_other", 6, compute_binary_response, jeffreys_binary, # vaccine barriers for vaccinated "smoothed_vaccine_barrier_eligible_has", "weight_unif", "v_vaccine_barrier_eligible_has", 6, compute_binary_response, jeffreys_binary, @@ -245,6 +254,10 @@ get_binary_indicators <- function() { "smoothed_wvaccine_barrier_type_has", "weight", "v_vaccine_barrier_type_has", 6, compute_binary_response, jeffreys_binary, "smoothed_vaccine_barrier_none_has", "weight_unif", "v_vaccine_barrier_none_has", 6, compute_binary_response, jeffreys_binary, "smoothed_wvaccine_barrier_none_has", "weight", "v_vaccine_barrier_none_has", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_appointment_location_has", "weight_unif", "v_vaccine_barrier_appointment_location_has", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_appointment_location_has", "weight", "v_vaccine_barrier_appointment_location_has", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_other_has", "weight_unif", "v_vaccine_barrier_other_has", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_other_has", "weight", "v_vaccine_barrier_other_has", 6, compute_binary_response, jeffreys_binary, # vaccine barriers for attempted vaccinated "smoothed_vaccine_barrier_eligible_tried", "weight_unif", "v_vaccine_barrier_eligible_tried", 6, compute_binary_response, jeffreys_binary, @@ -271,6 +284,11 @@ get_binary_indicators <- function() { "smoothed_wvaccine_barrier_type_tried", "weight", "v_vaccine_barrier_type_tried", 6, compute_binary_response, jeffreys_binary, "smoothed_vaccine_barrier_none_tried", "weight_unif", "v_vaccine_barrier_none_tried", 6, compute_binary_response, jeffreys_binary, "smoothed_wvaccine_barrier_none_tried", "weight", "v_vaccine_barrier_none_tried", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_appointment_location_tried", "weight_unif", "v_vaccine_barrier_appointment_location_tried", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_appointment_location_tried", "weight", "v_vaccine_barrier_appointment_location_tried", 6, compute_binary_response, jeffreys_binary, + "smoothed_vaccine_barrier_other_tried", "weight_unif", "v_vaccine_barrier_other_tried", 6, compute_binary_response, jeffreys_binary, + "smoothed_wvaccine_barrier_other_tried", "weight", "v_vaccine_barrier_other_tried", 6, compute_binary_response, jeffreys_binary, + # reasons for belief that vaccine is unnecessary "smoothed_dontneed_reason_had_covid", "weight_unif", "v_dontneed_reason_had_covid", 6, compute_binary_response, jeffreys_binary, @@ -294,6 +312,11 @@ get_binary_indicators <- function() { "smoothed_inperson_school_parttime", "weight_unif", "s_inperson_school_parttime", 6, compute_binary_response, jeffreys_binary, "smoothed_winperson_school_parttime", "weight", "s_inperson_school_parttime", 6, compute_binary_response, jeffreys_binary, + "smoothed_inperson_school_fulltime_oldest", "weight_unif", "s_inperson_school_fulltime_oldest", 6, compute_binary_response, jeffreys_binary, + "smoothed_winperson_school_fulltime_oldest", "weight", "s_inperson_school_fulltime_oldest", 6, compute_binary_response, jeffreys_binary, + "smoothed_inperson_school_parttime_oldest", "weight_unif", "s_inperson_school_parttime_oldest", 6, compute_binary_response, jeffreys_binary, + "smoothed_winperson_school_parttime_oldest", "weight", "s_inperson_school_parttime_oldest", 6, compute_binary_response, jeffreys_binary, + # beliefs "smoothed_belief_masking_effective", "weight_unif", "b_belief_masking_effective", 6, compute_binary_response, jeffreys_binary, "smoothed_wbelief_masking_effective", "weight", "b_belief_masking_effective", 6, compute_binary_response, jeffreys_binary, diff --git a/facebook/delphiFacebook/R/contingency_indicators.R b/facebook/delphiFacebook/R/contingency_indicators.R index 81bddac29..f5f652a45 100644 --- a/facebook/delphiFacebook/R/contingency_indicators.R +++ b/facebook/delphiFacebook/R/contingency_indicators.R @@ -135,6 +135,7 @@ get_aggs <- function() { "pct_covid_vaccinated_friends", "v_covid_vaccinated_friends", compute_binary, jeffreys_binary, "pct_vaccinate_children", "v_vaccinate_children", compute_binary, jeffreys_binary, + "pct_vaccinate_child_oldest", "v_vaccinate_child_oldest", compute_binary, jeffreys_binary, "pct_accept_vaccine_defyes", "v_accept_vaccine_defyes", compute_binary, jeffreys_multinomial_factory(4), "pct_accept_vaccine_probyes", "v_accept_vaccine_probyes", compute_binary, jeffreys_multinomial_factory(4), @@ -203,6 +204,7 @@ get_aggs <- function() { "pct_hesitant_barrier_health_condition", "v_hesitant_barrier_health_condition", compute_binary, jeffreys_binary, "pct_hesitant_barrier_pregnant", "v_hesitant_barrier_pregnant", compute_binary, jeffreys_binary, "pct_hesitant_barrier_other", "v_hesitant_barrier_other", compute_binary, jeffreys_binary, + "pct_hesitant_barrier_dislike_vaccines_generally", "v_hesitant_barrier_dislike_vaccines_generally", compute_binary, jeffreys_binary, "pct_hesitant_dontneed_reason_had_covid", "v_hesitant_dontneed_reason_had_covid", compute_binary, jeffreys_binary, "pct_hesitant_dontneed_reason_dont_spend_time", "v_hesitant_dontneed_reason_dont_spend_time", compute_binary, jeffreys_binary, @@ -227,6 +229,7 @@ get_aggs <- function() { "pct_barrier_health_condition", "v_hesitancy_reason_health_condition", compute_binary, jeffreys_binary, "pct_barrier_pregnant", "v_hesitancy_reason_pregnant", compute_binary, jeffreys_binary, "pct_barrier_other", "v_hesitancy_reason_other", compute_binary, jeffreys_binary, + "pct_barrier_dislike_vaccines_generally", "v_hesitancy_reason_dislike_vaccines_generally", compute_binary, jeffreys_binary, # vaccine "don't need" reasons "pct_dontneed_reason_had_covid", "v_dontneed_reason_had_covid_5abc_6", compute_binary, jeffreys_binary, @@ -252,6 +255,7 @@ get_aggs <- function() { "pct_defno_barrier_health_condition", "v_defno_barrier_health_condition", compute_binary, jeffreys_binary, "pct_defno_barrier_pregnant", "v_defno_barrier_pregnant", compute_binary, jeffreys_binary, "pct_defno_barrier_other", "v_defno_barrier_other", compute_binary, jeffreys_binary, + "pct_defno_barrier_dislike_vaccines_generally", "v_defno_barrier_dislike_vaccines_generally", compute_binary, jeffreys_binary, "pct_defno_dontneed_reason_had_covid", "v_defno_dontneed_reason_had_covid", compute_binary, jeffreys_binary, "pct_defno_dontneed_reason_dont_spend_time", "v_defno_dontneed_reason_dont_spend_time", compute_binary, jeffreys_binary, @@ -284,6 +288,8 @@ get_aggs <- function() { "pct_vaccine_barrier_time", "v_vaccine_barrier_time", compute_binary, jeffreys_binary, "pct_vaccine_barrier_type", "v_vaccine_barrier_type", compute_binary, jeffreys_binary, "pct_vaccine_barrier_none", "v_vaccine_barrier_none", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_appointment_location", "v_vaccine_barrier_appointment_location", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_other", "v_vaccine_barrier_other", compute_binary, jeffreys_binary, # beliefs "pct_belief_masking_effective", "b_belief_masking_effective", compute_binary, jeffreys_binary, @@ -397,6 +403,8 @@ get_aggs <- function() { "pct_vaccine_barrier_time_has", "v_vaccine_barrier_time_has", compute_binary, jeffreys_binary, "pct_vaccine_barrier_type_has", "v_vaccine_barrier_type_has", compute_binary, jeffreys_binary, "pct_vaccine_barrier_none_has", "v_vaccine_barrier_none_has", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_appointment_location_has", "v_vaccine_barrier_appointment_location_has", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_other_has", "v_vaccine_barrier_other_has", compute_binary, jeffreys_binary, # vaccine barriers for tried vaccinated "pct_vaccine_barrier_eligible_tried", "v_vaccine_barrier_eligible_tried", compute_binary, jeffreys_binary, @@ -410,7 +418,9 @@ get_aggs <- function() { "pct_vaccine_barrier_childcare_tried", "v_vaccine_barrier_childcare_tried", compute_binary, jeffreys_binary, "pct_vaccine_barrier_time_tried", "v_vaccine_barrier_time_tried", compute_binary, jeffreys_binary, "pct_vaccine_barrier_type_tried", "v_vaccine_barrier_type_tried", compute_binary, jeffreys_binary, - "pct_vaccine_barrier_none_tried", "v_vaccine_barrier_none_tried", compute_binary, jeffreys_binary + "pct_vaccine_barrier_none_tried", "v_vaccine_barrier_none_tried", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_appointment_location_tried", "v_vaccine_barrier_appointment_location_tried", compute_binary, jeffreys_binary, + "pct_vaccine_barrier_other_tried", "v_vaccine_barrier_other_tried", compute_binary, jeffreys_binary ) aggs <- create_aggs_product(regions, groups, indicators) diff --git a/facebook/delphiFacebook/R/contingency_variables.R b/facebook/delphiFacebook/R/contingency_variables.R index 4b38dd110..8dbf16ce2 100644 --- a/facebook/delphiFacebook/R/contingency_variables.R +++ b/facebook/delphiFacebook/R/contingency_variables.R @@ -567,16 +567,27 @@ code_vaccine_barriers <- function(input_data, wave) { input_data$v_hesitant_barrier_other <- is_selected(hesitancy_reasons, "13") input_data$v_hesitant_barrier_pregnant <- is_selected(hesitancy_reasons, "14") input_data$v_hesitant_barrier_religious <- is_selected(hesitancy_reasons, "15") + input_data$v_hesitant_barrier_dislike_vaccines_generally <- is_selected(hesitancy_reasons, "16") # replacing choice 5 as of Wave 12 - # These response choices were removed starting in Wave 11. They are explicitly set to missing - # for waves 11 and later since `is_selected` will return FALSE (meaning "not selected") for - # them if the respondent selected at least once answer choice. - input_data$v_hesitant_barrier_allergic[input_data$wave >= 11] <- NA - input_data$v_hesitant_barrier_not_recommended[input_data$wave >= 11] <- NA - input_data$v_hesitant_barrier_distrust_vaccines[input_data$wave >= 11] <- NA - input_data$v_hesitant_barrier_health_condition[input_data$wave >= 11] <- NA - input_data$v_hesitant_barrier_pregnant[input_data$wave >= 11] <- NA - + # For waves before a given response choice existed, explicitly set the + # derived field to missing since `is_selected` will return FALSE (meaning + # "not selected") for them if the respondent selected at least once answer + # choice. + if (wave >= 11) { + input_data$v_hesitant_barrier_allergic <- NA + input_data$v_hesitant_barrier_not_recommended <- NA + input_data$v_hesitant_barrier_health_condition <- NA + input_data$v_hesitant_barrier_pregnant <- NA + } + if (wave == 11) { + input_data$v_hesitant_barrier_distrust_vaccines <- NA + } + if (wave < 12) { + input_data$v_hesitant_barrier_dislike_vaccines_generally <- NA + } + if (wave >= 12) { + input_data$v_hesitant_barrier_dislike_vaccines <- NA + } } else { input_data$v_hesitant_barrier_sideeffects <- NA input_data$v_hesitant_barrier_allergic <- NA @@ -593,6 +604,7 @@ code_vaccine_barriers <- function(input_data, wave) { input_data$v_hesitant_barrier_other <- NA input_data$v_hesitant_barrier_pregnant <- NA input_data$v_hesitant_barrier_religious <- NA + input_data$v_hesitant_barrier_dislike_vaccines_generally <- NA } # defno_barrier_ @@ -618,16 +630,27 @@ code_vaccine_barriers <- function(input_data, wave) { input_data$v_defno_barrier_other <- is_selected(defno_reasons, "13") input_data$v_defno_barrier_pregnant <- is_selected(defno_reasons, "14") input_data$v_defno_barrier_religious <- is_selected(defno_reasons, "15") - - # These response choices were removed starting in Wave 11. They are explicitly set to missing - # for waves 11 and later since `is_selected` will return FALSE (meaning "not selected") for - # them if the respondent selected at least once answer choice. - input_data$v_defno_barrier_allergic[input_data$wave >= 11] <- NA - input_data$v_defno_barrier_not_recommended[input_data$wave >= 11] <- NA - input_data$v_defno_barrier_distrust_vaccines[input_data$wave >= 11] <- NA - input_data$v_defno_barrier_health_condition[input_data$wave >= 11] <- NA - input_data$v_defno_barrier_pregnant[input_data$wave >= 11] <- NA - + input_data$v_defno_barrier_dislike_vaccines_generally <- is_selected(defno_reasons, "16") # replacing choice 5 as of Wave 12 + + # For waves before a given response choice existed, explicitly set the + # derived field to missing since `is_selected` will return FALSE (meaning + # "not selected") for them if the respondent selected at least once answer + # choice. + if (wave >= 11) { + input_data$v_defno_barrier_allergic <- NA + input_data$v_defno_barrier_not_recommended <- NA + input_data$v_defno_barrier_health_condition <- NA + input_data$v_defno_barrier_pregnant <- NA + } + if (wave == 11) { + input_data$v_defno_barrier_distrust_vaccines <- NA + } + if (wave < 12) { + input_data$v_defno_barrier_dislike_vaccines_generally <- NA + } + if (wave >= 12) { + input_data$v_defno_barrier_dislike_vaccines <- NA + } } else { input_data$v_defno_barrier_sideeffects <- NA input_data$v_defno_barrier_allergic <- NA @@ -644,6 +667,7 @@ code_vaccine_barriers <- function(input_data, wave) { input_data$v_defno_barrier_other <- NA input_data$v_defno_barrier_pregnant <- NA input_data$v_defno_barrier_religious <- NA + input_data$v_defno_barrier_dislike_vaccines_generally <- NA } # dontneed_reason_ diff --git a/facebook/delphiFacebook/R/responses.R b/facebook/delphiFacebook/R/responses.R index 424eb01e4..06d7aefa1 100644 --- a/facebook/delphiFacebook/R/responses.R +++ b/facebook/delphiFacebook/R/responses.R @@ -692,7 +692,7 @@ surveyID_to_wave <- Vectorize(function(surveyID) { "SV_6PADB8DyF9SIyXk" = 10, "SV_4VEaeffqQtDo33M" = 11, "SV_3TL0r243mLkDzCK" = 12.5, # experimental version of Wave 12 - "TBD finalized version" = 12 # finalized version of Wave 12 + "SV_eDISRi5wQcNU70G" = 12 # finalized version of Wave 12 ) if ( any(names(waves) == surveyID) ) { diff --git a/facebook/delphiFacebook/R/variables.R b/facebook/delphiFacebook/R/variables.R index 87a7e76e7..eae5afc55 100644 --- a/facebook/delphiFacebook/R/variables.R +++ b/facebook/delphiFacebook/R/variables.R @@ -419,6 +419,9 @@ code_testing <- function(input_data, wave) { if ("B13" %in% names(input_data)) { input_data$t_had_covid_ever <- input_data$B13 == 1 + } else if ("B13a" %in% names(input_data)) { + # B13a, replacing B13 as of Wave 12, removes "As far as you know" wording. + input_data$t_had_covid_ever <- input_data$B13a == 1 } else { input_data$t_had_covid_ever <- NA } @@ -551,28 +554,41 @@ code_vaccines <- function(input_data, wave) { hesitancy_reasons <- split_options(hesitancy_reasons) input_data$v_hesitancy_reason_sideeffects <- is_selected(hesitancy_reasons, "1") - input_data$v_hesitancy_reason_allergic <- is_selected(hesitancy_reasons, "2") + input_data$v_hesitancy_reason_allergic <- is_selected(hesitancy_reasons, "2") # removed as of Wave 11 input_data$v_hesitancy_reason_ineffective <- is_selected(hesitancy_reasons, "3") input_data$v_hesitancy_reason_unnecessary <- is_selected(hesitancy_reasons, "4") - input_data$v_hesitancy_reason_dislike_vaccines <- is_selected(hesitancy_reasons, "5") - input_data$v_hesitancy_reason_not_recommended <- is_selected(hesitancy_reasons, "6") + input_data$v_hesitancy_reason_dislike_vaccines <- is_selected(hesitancy_reasons, "5") # removed as of Wave 12 + input_data$v_hesitancy_reason_not_recommended <- is_selected(hesitancy_reasons, "6") # removed as of Wave 11 input_data$v_hesitancy_reason_wait_safety <- is_selected(hesitancy_reasons, "7") input_data$v_hesitancy_reason_low_priority <- is_selected(hesitancy_reasons, "8") input_data$v_hesitancy_reason_cost <- is_selected(hesitancy_reasons, "9") - input_data$v_hesitancy_reason_distrust_vaccines <- is_selected(hesitancy_reasons, "10") + input_data$v_hesitancy_reason_distrust_vaccines <- is_selected(hesitancy_reasons, "10") # removed in Wave 11, reintroduced as of Wave 12 input_data$v_hesitancy_reason_distrust_gov <- is_selected(hesitancy_reasons, "11") - input_data$v_hesitancy_reason_health_condition <- is_selected(hesitancy_reasons, "12") + input_data$v_hesitancy_reason_health_condition <- is_selected(hesitancy_reasons, "12") # removed as of Wave 11 input_data$v_hesitancy_reason_other <- is_selected(hesitancy_reasons, "13") - input_data$v_hesitancy_reason_pregnant <- is_selected(hesitancy_reasons, "14") + input_data$v_hesitancy_reason_pregnant <- is_selected(hesitancy_reasons, "14") # removed as of Wave 11 input_data$v_hesitancy_reason_religious <- is_selected(hesitancy_reasons, "15") + input_data$v_hesitancy_reason_dislike_vaccines_generally <- is_selected(hesitancy_reasons, "16") # replacing choice 5 as of Wave 12 + # For waves before a given response choice existed, explicitly set the + # derived field to missing since `is_selected` will return FALSE (meaning + # "not selected") for them if the respondent selected at least once answer + # choice. if (wave >= 11) { input_data$v_hesitancy_reason_allergic <- NA input_data$v_hesitancy_reason_not_recommended <- NA - input_data$v_hesitancy_reason_distrust_vaccines <- NA input_data$v_hesitancy_reason_health_condition <- NA input_data$v_hesitancy_reason_pregnant <- NA } + if (wave == 11) { + input_data$v_hesitancy_reason_distrust_vaccines <- NA + } + if (wave < 12) { + input_data$v_hesitancy_reason_dislike_vaccines_generally <- NA + } + if (wave >= 12) { + input_data$v_hesitancy_reason_dislike_vaccines <- NA + } } else { input_data$v_hesitancy_reason_sideeffects <- NA_real_ @@ -590,6 +606,7 @@ code_vaccines <- function(input_data, wave) { input_data$v_hesitancy_reason_other <- NA_real_ input_data$v_hesitancy_reason_pregnant <- NA_real_ input_data$v_hesitancy_reason_religious <- NA_real_ + input_data$v_hesitancy_reason_dislike_vaccines_generally <- NA_real_ } if ( "V6" %in% names(input_data) ) { @@ -661,6 +678,43 @@ code_vaccines <- function(input_data, wave) { input_data$v_vaccine_barrier_none <- NA } + if ( all(c("V15c", "V15b") %in% names(input_data)) ) { + # V15c introduced in Wave 12, replacing V15a with clarified wording. + vaccine_barriers <- coalesce(input_data$V15c, input_data$V15b) + vaccine_barriers <- ifelse(vaccine_barriers == "13", NA, vaccine_barriers) + vaccine_barriers <- split_options(vaccine_barriers) + + input_data$v_vaccine_barrier_eligible <- is_selected(vaccine_barriers, "1") + input_data$v_vaccine_barrier_no_appointments <- is_selected(vaccine_barriers, "2") + input_data$v_vaccine_barrier_appointment_time <- is_selected(vaccine_barriers, "3") + input_data$v_vaccine_barrier_technical_difficulties <- is_selected(vaccine_barriers, "4") + input_data$v_vaccine_barrier_document <- is_selected(vaccine_barriers, "5") + input_data$v_vaccine_barrier_technology_access <- is_selected(vaccine_barriers, "6") + input_data$v_vaccine_barrier_travel <- is_selected(vaccine_barriers, "7") + input_data$v_vaccine_barrier_language <- is_selected(vaccine_barriers, "8") + input_data$v_vaccine_barrier_childcare <- is_selected(vaccine_barriers, "9") + input_data$v_vaccine_barrier_time <- is_selected(vaccine_barriers, "10") + input_data$v_vaccine_barrier_type <- is_selected(vaccine_barriers, "12") + input_data$v_vaccine_barrier_none <- is_selected(vaccine_barriers, "11") + input_data$v_vaccine_barrier_appointment_location <- is_selected(vaccine_barriers, "14") + input_data$v_vaccine_barrier_other <- is_selected(vaccine_barriers, "15") + } else { + input_data$v_vaccine_barrier_eligible <- NA + input_data$v_vaccine_barrier_no_appointments <- NA + input_data$v_vaccine_barrier_appointment_time <- NA + input_data$v_vaccine_barrier_technical_difficulties <- NA + input_data$v_vaccine_barrier_document <- NA + input_data$v_vaccine_barrier_technology_access <- NA + input_data$v_vaccine_barrier_travel <- NA + input_data$v_vaccine_barrier_language <- NA + input_data$v_vaccine_barrier_childcare <- NA + input_data$v_vaccine_barrier_time <- NA + input_data$v_vaccine_barrier_type <- NA + input_data$v_vaccine_barrier_none <- NA + input_data$v_vaccine_barrier_appointment_location <- NA + input_data$v_vaccine_barrier_other <- NA + } + if ( "V15a" %in% names(input_data) ) { # introduced in Wave 11 vaccine_barriers <- split_options(input_data$V15a) @@ -691,7 +745,42 @@ code_vaccines <- function(input_data, wave) { input_data$v_vaccine_barrier_type_has <- NA input_data$v_vaccine_barrier_none_has <- NA } - + + if ( "V15c" %in% names(input_data) ) { + # V15c introduced in Wave 12, replacing V15a with clarified wording. + vaccine_barriers <- split_options(input_data$V15c) + + input_data$v_vaccine_barrier_eligible_has <- is_selected(vaccine_barriers, "1") + input_data$v_vaccine_barrier_no_appointments_has <- is_selected(vaccine_barriers, "2") + input_data$v_vaccine_barrier_appointment_time_has <- is_selected(vaccine_barriers, "3") + input_data$v_vaccine_barrier_technical_difficulties_has <- is_selected(vaccine_barriers, "4") + input_data$v_vaccine_barrier_document_has <- is_selected(vaccine_barriers, "5") + input_data$v_vaccine_barrier_technology_access_has <- is_selected(vaccine_barriers, "6") + input_data$v_vaccine_barrier_travel_has <- is_selected(vaccine_barriers, "7") + input_data$v_vaccine_barrier_language_has <- is_selected(vaccine_barriers, "8") + input_data$v_vaccine_barrier_childcare_has <- is_selected(vaccine_barriers, "9") + input_data$v_vaccine_barrier_time_has <- is_selected(vaccine_barriers, "10") + input_data$v_vaccine_barrier_type_has <- is_selected(vaccine_barriers, "12") + input_data$v_vaccine_barrier_none_has <- is_selected(vaccine_barriers, "11") + input_data$v_vaccine_barrier_appointment_location_has <- is_selected(vaccine_barriers, "14") + input_data$v_vaccine_barrier_other_has <- is_selected(vaccine_barriers, "15") + } else { + input_data$v_vaccine_barrier_eligible_has <- NA + input_data$v_vaccine_barrier_no_appointments_has <- NA + input_data$v_vaccine_barrier_appointment_time_has <- NA + input_data$v_vaccine_barrier_technical_difficulties_has <- NA + input_data$v_vaccine_barrier_document_has <- NA + input_data$v_vaccine_barrier_technology_access_has <- NA + input_data$v_vaccine_barrier_travel_has <- NA + input_data$v_vaccine_barrier_language_has <- NA + input_data$v_vaccine_barrier_childcare_has <- NA + input_data$v_vaccine_barrier_time_has <- NA + input_data$v_vaccine_barrier_type_has <- NA + input_data$v_vaccine_barrier_none_has <- NA + input_data$v_vaccine_barrier_appointment_location_has <- NA + input_data$v_vaccine_barrier_other_has <- NA + } + if ( "V15b" %in% names(input_data) ) { # introduced in Wave 11 # If the entire column is NA, ifelse() results in a logical vector, not a @@ -716,6 +805,17 @@ code_vaccines <- function(input_data, wave) { input_data$v_vaccine_barrier_time_tried <- is_selected(vaccine_barriers, "10") input_data$v_vaccine_barrier_type_tried <- is_selected(vaccine_barriers, "12") input_data$v_vaccine_barrier_none_tried <- is_selected(vaccine_barriers, "11") + input_data$v_vaccine_barrier_appointment_location_tried <- is_selected(vaccine_barriers, "14") + input_data$v_vaccine_barrier_other_tried <- is_selected(vaccine_barriers, "15") + + if (wave < 12) { + # For waves before a given response choice existed, explicitly set the + # derived field to missing since `is_selected` will return FALSE (meaning + # "not selected") for them if the respondent selected at least once answer + # choice. + input_data$v_vaccine_barrier_appointment_location_tried <- NA + input_data$v_vaccine_barrier_other_tried <- NA + } } else { input_data$v_vaccine_barrier_eligible_tried <- NA input_data$v_vaccine_barrier_no_appointments_tried <- NA @@ -729,6 +829,8 @@ code_vaccines <- function(input_data, wave) { input_data$v_vaccine_barrier_time_tried <- NA input_data$v_vaccine_barrier_type_tried <- NA input_data$v_vaccine_barrier_none_tried <- NA + input_data$v_vaccine_barrier_appointment_location_tried <- NA + input_data$v_vaccine_barrier_other_tried <- NA } if ( "E4" %in% names(input_data) ) { @@ -744,6 +846,22 @@ code_vaccines <- function(input_data, wave) { input_data$v_vaccinate_children <- NA_real_ } + if ( "P3" %in% names(input_data) ) { + # introduced in Wave 12, replacing E4 + # Yes definitely, Yes probably, Already vaccinated -> 1 + # No definitely not, No probably not -> 0 + input_data$v_vaccinate_child_oldest <- case_when( + input_data$P3 == 1 ~ 1, + input_data$P3 == 2 ~ 1, + input_data$P3 == 3 ~ 0, + input_data$P3 == 4 ~ 0, + input_data$P3 == 5 ~ 1, + TRUE ~ NA_real_ + ) + } else { + input_data$v_vaccinate_child_oldest <- NA_real_ + } + if ( "V16" %in% names(input_data) ) { # introduced in Wave 11 input_data$v_try_vaccinate_1m <- case_when( @@ -797,6 +915,25 @@ code_schooling <- function(input_data, wave) { } else { input_data$s_inperson_school_parttime <- NA_real_ } + + if ("P5" %in% names(input_data)) { + # Coded as 1 = in person classes, 2 = online/remote/distance, 3 = both/mix, + # 4 = not in school + input_data$s_inperson_school_fulltime_oldest <- case_when( + input_data$P5 == 1 ~ 1, + input_data$P5 != 1 ~ 0, + TRUE ~ NA_real_ + ) + input_data$s_inperson_school_parttime_oldest <- case_when( + input_data$P5 == 3 ~ 1, + input_data$P5 != 3 ~ 0, + TRUE ~ NA_real_ + ) + + } else { + input_data$s_inperson_school_fulltime_oldest <- NA_real_ + input_data$s_inperson_school_parttime_oldest <- NA_real_ + } return(input_data) }