knitr::kable(cb, booktabs = TRUE, longtable = TRUE)
## Set up
knitr::opts_chunk$set(
warning = TRUE, # show warnings during codebook generation
message = TRUE, # show messages during codebook generation
error = TRUE, # do not interrupt codebook generation in case of errors,
# usually better for debugging
echo = TRUE # show R code
)
ggplot2::theme_set(ggplot2::theme_bw())
#LOAD Packages
library(codebook)
library(haven)
library(DT)
library(htmlwidgets)
codebook_data <- read_sav("C:\\Users\\adyke\\Documents\\R\\VENUS_Co-Design\\Eligibility_Screener\\VENUS_Final_01_Eligibility_Screener_May 21, 2026_08.37.sav")
codebook_data <- detect_missing(codebook_data,
only_labelled = TRUE,
negative_values_are_missing = FALSE,
ninety_nine_problems = TRUE,
)
codebook_data <- detect_scales(codebook_data)
## Warning in detect_scales(codebook_data): e_q items found, but no aggregate
## Warning in detect_scales(codebook_data): phone items found, but no aggregate
## Warning in detect_scales(codebook_data): pref_contact_method items found, but
## no aggregate
# -------------------------
# CLEANING STEP (edit this list as needed!)
# -------------------------
codebook_data <- codebook_data[, !names(codebook_data) %in% c("IPAddress", "StartDate", "EndDate", "Status", "Progress", "Duration_in_seconds", "Finished", "RecordedDate", "ResponseID", "RecipientLastName", "RecipientFirstName", "RecipientEmail", "ExternalReference", "LocationLatitude", "LocationLongitude", "DistributionChannel", "UserLanguage")]
Duration (in seconds)
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | min | median | max | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|
| Duration_in_seconds | Duration (in seconds) | numeric | 0 | NA | NA | NA | F40.2 | 5 |
Response ID
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| ResponseId | Response ID | character | 0 | 0 | 0 | 0 | A50 | 15 |
Would you like to proceed to the screening survey to assess your eligibility for the study?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q1 | Would you like to proceed to the screening survey to assess your eligibility for the study? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you able to speak, read, and write English?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| english | Are you able to speak, read, and write English? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
What is your age?
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | min | median | max | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|
| age | What is your age? | numeric | 0 | NA | NA | NA | F40.2 | 5 |
What sex were you assigned at birth?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| sex | What sex were you assigned at birth? | haven_labelled | 0 | Inf | NA | -Inf | 4 | F40.0 | 5 |
| name | value |
|---|---|
| Male | 1 |
| Female | 2 |
| Intersex | 3 |
| Prefer not to say | 4 |
Do you currently regularly smoke cigarettes?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q5 | Do you currently regularly smoke cigarettes? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
On average, how many cigarettes do you smoke each day?
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | min | median | max | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|
| e_q6 | On average, how many cigarettes do you smoke each day? | numeric | 0 | NA | NA | NA | F40.2 | 5 |
What type or brand of cigarettes do you most often smoke?
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| e_q7 | What type or brand of cigarettes do you most often smoke? | character | 0 | 0 | 0 | 0 | A2000 | 15 |
Have you ever attempted to quit smoking?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q8 | Have you ever attempted to quit smoking? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you CURRENTLY attempting to quit smoking?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q9 | Are you CURRENTLY attempting to quit smoking? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you interested in quitting smoking in the next six months?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q10 | Are you interested in quitting smoking in the next six months? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Have you regularly smoked cigarettes in the past?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q11 | Have you regularly smoked cigarettes in the past? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you currently in the process of quitting smoking?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q12 | Are you currently in the process of quitting smoking? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Have you recently successfully quit smoking in the past 2 years (i.e., not a single puff on a cigarette in at least the past 6 months)?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q13 | Have you recently successfully quit smoking in the past 2 years (i.e., not a single puff on a cigarette in at least the past 6 months)? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Do you currently own a smartphone (i.e., with a touch screen) that you regularly use (i.e., at least once per day)?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q14 | Do you currently own a smartphone (i.e., with a touch screen) that you regularly use (i.e., at least once per day)? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
How comfortable are you with using mobile apps on your smartphone?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q15 | How comfortable are you with using mobile apps on your smartphone? | haven_labelled | 0 | Inf | NA | -Inf | 3 | F40.0 | 5 |
| name | value |
|---|---|
| Very comfortable | 3 |
| A little comfortable | 2 |
| Not at all comfortable | 1 |
Have you used any apps on your smartphone to track your health or daily activities (e.g., steps, exercise, food intake, meditation, or other self-care activities)?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q16 | Have you used any apps on your smartphone to track your health or daily activities (e.g., steps, exercise, food intake, meditation, or other self-care activities)? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you willing to complete a survey (up to 25 minutes) and an interview over zoom (45 minutes) to tell us more about your history with smoking and attempts to quit smoking?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q17 | Are you willing to complete a survey (up to 25 minutes) and an interview over zoom (45 minutes) to tell us more about your history with smoking and attempts to quit smoking? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Do you have access to a computer, laptop or tablet with a webcam (i.e., for video conferencing, such as Zoom) to complete this portion of the study?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q18 | Do you have access to a computer, laptop or tablet with a webcam (i.e., for video conferencing, such as Zoom) to complete this portion of the study? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Do you have access to reliable Wi-Fi to compete the Zoom interview portion of the study?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q19 | Do you have access to reliable Wi-Fi to compete the Zoom interview portion of the study? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you willing to participate in a 2.5-hour in-person focus group at the University of Michigan to help us design a new smoking cessation smartphone app?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q20 | Are you willing to participate in a 2.5-hour in-person focus group at the University of Michigan to help us design a new smoking cessation smartphone app? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Are you local to the Ann Arbor area, within approximately 25 miles, or about 1 hour of travel, from the University of Michigan Institute for Social Research, located at 426 Thompson Street, Ann Arbor, MI 48104?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| e_q21 | Are you local to the Ann Arbor area, within approximately 25 miles, or about 1 hour of travel, from the University of Michigan Institute for Social Research, located at 426 Thompson Street, Ann Arbor, MI 48104? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
In order to contact you regarding study participation and next steps, a phone number is required. Your phone number will be used strictly for study purposes and will be kept completely confidential.
Please provide a phone number where we can contact you about next steps.
Enter your phone number using the following format: xxx-xxx-xxxx (e.g., 555-123-4567)
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| phone1 | In order to contact you regarding study participation
and next steps, a phone number is required. Your phone number will be
used strictly for study purposes and will be kept completely
confidential. Please provide a phone number where we can contact you about next steps. Enter your phone number using the following format: xxx-xxx-xxxx (e.g., 555-123-4567) |
character | 0 | 0 | 0 | 0 | A2000 | 15 |
What type of phone is this?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| phone1_type | What type of phone is this? | haven_labelled | 0 | Inf | NA | -Inf | 3 | F40.0 | 5 |
| name | value |
|---|---|
| Cell phone | 1 |
| Home phone | 2 |
| Work phone | 3 |
Is it okay to text you updates about the study (standard messaging rates may apply)?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| phone1_text | Is it okay to text you updates about the study (standard messaging rates may apply)? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Do you have a second phone number where we can contact you about the study?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| have_phone2_yn | Do you have a second phone number where we can contact you about the study? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
Please provide your secondary phone number here:
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| phone2 | Please provide your secondary phone number here: | character | 0 | 0 | 0 | 0 | A2000 | 15 |
What type of phone is this?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| phone2_type | What type of phone is this? | haven_labelled | 0 | Inf | NA | -Inf | 3 | F40.0 | 5 |
| name | value |
|---|---|
| Cell phone | 1 |
| Home phone | 2 |
| Work phone | 3 |
Is it okay to text you updates about the study (standard messaging rates may apply)?
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| phone2_text | Is it okay to text you updates about the study (standard messaging rates may apply)? | haven_labelled | 0 | Inf | NA | -Inf | 2 | F40.0 | 5 |
| name | value |
|---|---|
| No | 0 |
| Yes | 1 |
In order to process your payment for participating in this study should you be selected, a mailing address is required.
Your mailing address will be used solely for study purposes and will be kept completely confidential.
What is the full address for where you currently receive mail? Please list: Full Street Address City, State, ZIP Code
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| mailing_address | In order to process your payment for participating in
this study should you be selected, a mailing address is
required. Your mailing address will be used solely for study purposes and will be kept completely confidential. What is the full address for where you currently receive mail? Please list: Full Street Address City, State, ZIP Code |
character | 0 | 0 | 0 | 0 | A2000 | 15 |
In order to participate in this study, an email address is required to send you the survey link. Your email address will be used solely for study purposes and will be kept completely confidential.
Please provide your email address here:
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| In order to participate in this study, an email address
is required to send you the survey link. Your email address will be used
solely for study purposes and will be kept completely
confidential. Please provide your email address here: |
character | 0 | 0 | 0 | 0 | A2000 | 15 |
Finally, we need to collect your first and last name so that study team members know how to address you during scheduling.
Your name will be used solely for study purposes and will be kept completely confidential.
Please provide your first and last name here:
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| name | Finally, we need to collect your first and last name so
that study team members know how to address you during scheduling.
Your name will be used solely for study purposes and will be kept completely confidential. Please provide your first and last name here: |
character | 0 | 0 | 0 | 0 | A2000 | 15 |
What are your preferred methods of contact? (Select all that apply) Cell phone
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| pref_contact_method_1 | What are your preferred methods of contact? (Select all that apply) Cell phone | haven_labelled | 0 | Inf | NA | -Inf | 1 | F40.0 | 5 |
| name | value |
|---|---|
| Cell phone | 1 |
What are your preferred methods of contact? (Select all that apply) Home phone
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| pref_contact_method_2 | What are your preferred methods of contact? (Select all that apply) Home phone | haven_labelled | 0 | Inf | NA | -Inf | 1 | F40.0 | 5 |
| name | value |
|---|---|
| Home phone | 1 |
What are your preferred methods of contact? (Select all that apply) Work phone
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| pref_contact_method_3 | What are your preferred methods of contact? (Select all that apply) Work phone | haven_labelled | 0 | Inf | NA | -Inf | 1 | F40.0 | 5 |
| name | value |
|---|---|
| Work phone | 1 |
What are your preferred methods of contact? (Select all that apply) E-mail
## No non-missing values to show.
0 missing values.
## Warning: There was 1 warning in `dplyr::summarize()`.
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## ℹ In group 0: .
## Caused by warning:
## ! There were 2 warnings in `dplyr::summarize()`.
## The first warning was:
## ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
## mangled_skimmers$funs)`.
## Caused by warning in `min()`:
## ! no non-missing arguments to min; returning Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
| name | label | data_type | n_missing | min | median | max | n_value_labels | hist | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|---|---|
| pref_contact_method_4 | What are your preferred methods of contact? (Select all that apply) E-mail | haven_labelled | 0 | Inf | NA | -Inf | 1 | F40.0 | 5 |
| name | value |
|---|---|
| 1 |
group
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| group | group | character | 0 | 0 | 0 | 0 | A2000 | 15 |
participant_id
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| participant_id | participant_id | character | 0 | 0 | 0 | 0 | A2000 | 15 |
eligible
## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.
0 missing values.
| name | label | data_type | n_missing | n_unique | empty | whitespace | format.spss | display_width |
|---|---|---|---|---|---|---|---|---|
| eligible | eligible | character | 0 | 0 | 0 | 0 | A2000 | 15 |
The following JSON-LD can be found by search engines, if you share this codebook publicly on the web.
{
"name": "codebook_data",
"datePublished": "2026-05-21",
"description": "The dataset has N=0 rows and 40 columns.\n0 rows have no missing values on any column.\n\n\n## Table of variables\nThis table contains variable names, labels, and number of missing values.\nSee the complete codebook for more.\n\n[truncated]\n\n### Note\nThis dataset was automatically described using the [codebook R package](https://rubenarslan.github.io/codebook/) (version 0.10.1).",
"keywords": ["Duration__in_seconds_", "ResponseId", "e_q1", "english", "age", "sex", "e_q5", "e_q6", "e_q7", "e_q8", "e_q9", "e_q10", "e_q11", "e_q12", "e_q13", "e_q14", "e_q15", "e_q16", "e_q17", "e_q18", "e_q19", "e_q20", "e_q21", "phone1", "phone1_type", "phone1_text", "have_phone2_yn", "phone2", "phone2_type", "phone2_text", "mailing_address", "email", "name", "pref_contact_method_1", "pref_contact_method_2", "pref_contact_method_3", "pref_contact_method_4", "group", "participant_id", "eligible"],
"@context": "https://schema.org/",
"@type": "Dataset",
"variableMeasured": [
{
"name": "Duration__in_seconds_",
"description": "Duration (in seconds)",
"@type": "propertyValue"
},
{
"name": "ResponseId",
"description": "Response ID",
"@type": "propertyValue"
},
{
"name": "e_q1",
"description": "Would you like to proceed to the screening survey to assess your eligibility for the study?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "english",
"description": "Are you able to speak, read, and write English?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "age",
"description": "What is your age?",
"@type": "propertyValue"
},
{
"name": "sex",
"description": "What sex were you assigned at birth?",
"value": "1. Male,\n2. Female,\n3. Intersex,\n4. Prefer not to say",
"maxValue": 4,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "e_q5",
"description": "Do you currently regularly smoke cigarettes?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q6",
"description": "On average, how many cigarettes do you smoke each day?",
"@type": "propertyValue"
},
{
"name": "e_q7",
"description": "What type or brand of cigarettes do you most often smoke?",
"@type": "propertyValue"
},
{
"name": "e_q8",
"description": "Have you ever attempted to quit smoking?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q9",
"description": "Are you CURRENTLY attempting to quit smoking?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q10",
"description": "Are you interested in quitting smoking in the next six months?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q11",
"description": "Have you regularly smoked cigarettes in the past?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q12",
"description": "Are you currently in the process of quitting smoking?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q13",
"description": "Have you recently successfully quit smoking in the past 2 years (i.e., not a single puff on a cigarette in at least the past 6 months)?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q14",
"description": "Do you currently own a smartphone (i.e., with a touch screen) that you regularly use (i.e., at least once per day)?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q15",
"description": "How comfortable are you with using mobile apps on your smartphone?",
"value": "3. Very comfortable,\n2. A little comfortable,\n1. Not at all comfortable",
"maxValue": 3,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "e_q16",
"description": "Have you used any apps on your smartphone to track your health or daily activities (e.g., steps, exercise, food intake, meditation, or other self-care activities)?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q17",
"description": "Are you willing to complete a survey (up to 25 minutes) and an interview over zoom (45 minutes) to tell us more about your history with smoking and attempts to quit smoking?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q18",
"description": "Do you have access to a computer, laptop or tablet with a webcam (i.e., for video conferencing, such as Zoom) to complete this portion of the study?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q19",
"description": "Do you have access to reliable Wi-Fi to compete the Zoom interview portion of the study?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q20",
"description": "Are you willing to participate in a 2.5-hour in-person focus group at the University of Michigan to help us design a new smoking cessation smartphone app?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "e_q21",
"description": "Are you local to the Ann Arbor area, within approximately 25 miles, or about 1 hour of travel, from the University of Michigan Institute for Social Research, located at 426 Thompson Street, Ann Arbor, MI 48104?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "phone1",
"description": "In order to contact you regarding study participation and next steps, a phone number is required. Your phone number will be used strictly for study purposes and will be kept completely confidential.\n\n\n\nPlease provide a phone number where we can contact you about next steps. \n\nEnter your phone number using the following format: xxx-xxx-xxxx (e.g., 555-123-4567)",
"@type": "propertyValue"
},
{
"name": "phone1_type",
"description": "What type of phone is this?",
"value": "1. Cell phone,\n2. Home phone,\n3. Work phone",
"maxValue": 3,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "phone1_text",
"description": "Is it okay to text you updates about the study (standard messaging rates may apply)?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "have_phone2_yn",
"description": "Do you have a second phone number where we can contact you about the study?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "phone2",
"description": "Please provide your secondary phone number here:",
"@type": "propertyValue"
},
{
"name": "phone2_type",
"description": "What type of phone is this?",
"value": "1. Cell phone,\n2. Home phone,\n3. Work phone",
"maxValue": 3,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "phone2_text",
"description": "Is it okay to text you updates about the study (standard messaging rates may apply)?",
"value": "0. No,\n1. Yes",
"maxValue": 1,
"minValue": 0,
"@type": "propertyValue"
},
{
"name": "mailing_address",
"description": "In order to process your payment for participating in this study should you be selected, a mailing address is required.\n\n\n\nYour mailing address will be used solely for study purposes and will be kept completely confidential. \n\n\n\nWhat is the full address for where you currently receive mail? Please list: \nFull Street Address\nCity, State, ZIP Code",
"@type": "propertyValue"
},
{
"name": "email",
"description": "In order to participate in this study, an email address is required to send you the survey link. Your email address will be used solely for study purposes and will be kept completely confidential.\n\n\n\nPlease provide your email address here:",
"@type": "propertyValue"
},
{
"name": "name",
"description": "Finally, we need to collect your first and last name so that study team members know how to address you during scheduling. \n\n\n\nYour name will be used solely for study purposes and will be kept completely confidential. \n\n\n\nPlease provide your first and last name here:",
"@type": "propertyValue"
},
{
"name": "pref_contact_method_1",
"description": "What are your preferred methods of contact? (Select all that apply) Cell phone",
"value": "1. Cell phone",
"maxValue": 1,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "pref_contact_method_2",
"description": "What are your preferred methods of contact? (Select all that apply) Home phone",
"value": "1. Home phone",
"maxValue": 1,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "pref_contact_method_3",
"description": "What are your preferred methods of contact? (Select all that apply) Work phone",
"value": "1. Work phone",
"maxValue": 1,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "pref_contact_method_4",
"description": "What are your preferred methods of contact? (Select all that apply) E-mail",
"value": "1. E-mail",
"maxValue": 1,
"minValue": 1,
"@type": "propertyValue"
},
{
"name": "group",
"description": "group",
"@type": "propertyValue"
},
{
"name": "participant_id",
"description": "participant_id",
"@type": "propertyValue"
},
{
"name": "eligible",
"description": "eligible",
"@type": "propertyValue"
}
]
}`