Set-up

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)

Data Preparation + Cleaning

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")]

HTML Output (Interactive + Export Buttons)

DT::datatable(
  mtcars,
  options = list(
    scrollX = TRUE,
    pageLength = 5
  )
)
codebook(codebook_data)
## No 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 54 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 53 remaining warnings.
## 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 54 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 53 remaining warnings.

Metadata

Description

Dataset name: codebook_data

The dataset has N=0 rows and 40 columns. 0 rows have no missing values on any column.

Metadata for search engines
  • Date published: 2026-05-21
name value
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

Variables

Duration_in_seconds

Duration (in seconds)

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

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

ResponseId

Response ID

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

name label data_type n_missing n_unique empty whitespace format.spss display_width
ResponseId Response ID character 0 0 0 0 A50 15

e_q1

Would you like to proceed to the screening survey to assess your eligibility for the study?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

english

Are you able to speak, read, and write English?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

age

What is your age?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

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

sex

What sex were you assigned at birth?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Male 1
Female 2
Intersex 3
Prefer not to say 4

e_q5

Do you currently regularly smoke cigarettes?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q6

On average, how many cigarettes do you smoke each day?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

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

e_q7

What type or brand of cigarettes do you most often smoke?

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

e_q8

Have you ever attempted to quit smoking?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q9

Are you CURRENTLY attempting to quit smoking?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q10

Are you interested in quitting smoking in the next six months?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q11

Have you regularly smoked cigarettes in the past?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q12

Are you currently in the process of quitting smoking?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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)?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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)?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q15

How comfortable are you with using mobile apps on your smartphone?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Very comfortable 3
A little comfortable 2
Not at all comfortable 1

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)?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

e_q19

Do you have access to reliable Wi-Fi to compete the Zoom interview portion of the study?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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)

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

phone1_type

What type of phone is this?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Cell phone 1
Home phone 2
Work phone 3

phone1_text

Is it okay to text you updates about the study (standard messaging rates may apply)?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

have_phone2_yn

Do you have a second phone number where we can contact you about the study?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

phone2

Please provide your secondary phone number here:

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

phone2_type

What type of phone is this?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Cell phone 1
Home phone 2
Work phone 3

phone2_text

Is it okay to text you updates about the study (standard messaging rates may apply)?

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
No 0
Yes 1

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

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

email

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:

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

name label data_type n_missing n_unique empty whitespace format.spss display_width
email 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

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:

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

pref_contact_method_1

What are your preferred methods of contact? (Select all that apply) Cell phone

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Cell phone 1

pref_contact_method_2

What are your preferred methods of contact? (Select all that apply) Home phone

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Home phone 1

pref_contact_method_3

What are your preferred methods of contact? (Select all that apply) Work phone

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
Work phone 1

pref_contact_method_4

What are your preferred methods of contact? (Select all that apply) E-mail

Distribution

## No non-missing values to show.

0 missing values.

Summary statistics

## 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

Value labels

Response choices
name value
E-mail 1

group

group

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

participant_id

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

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

eligible

Distribution

## Error in `if (stats::median(table(x)) == 1) ...`:
## ! missing value where TRUE/FALSE needed
## No non-missing values to show.

0 missing values.

Summary statistics

name label data_type n_missing n_unique empty whitespace format.spss display_width
eligible eligible character 0 0 0 0 A2000 15

Missingness report

Codebook table

JSON-LD metadata

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"
    }
  ]
}`