Hello all,
I have a large amount of people in my study who either have not completed it or who failed out due to my attention checks. Since there are 600 people, I would like to create some kind of loop or function (or both?) to check everyone's answers to find out who (and how many) failed out vs. dropped out.
There are six conditions in total, each with their own unique 3 attention check questions. Its a between subjects' design, so each person (i.e. row in the data) was assigned to one condition. I imagine the code should first look to see the condition tag of row "i" in the data, then match that tag and the appropriate QID to the codebook, and check the answer. A simple 1/0 code for fail/not fail any of the three questions should suffice.
Both example data and the codebook are here:
example_data<-structure(list(ResponseId = c(36706370L, 35165951L, 94751328L,
91438384L, 21240033L, 18711877L, 3822060L, 37350350L, 60661688L,
79826766L, 30722991L, 77534285L, 92995145L, 80964044L, 45542745L,
32141225L, 29057470L, 56307572L, 93353922L), Q134 = c(NA, NA,
1L, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L,
NA), Q135 = c(NA, NA, 3L, NA, NA, NA, NA, 3L, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 3L, NA), Q136 = c(NA, NA, 1.5, NA, NA, NA,
NA, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1.5, NA), Q529 = c(NA,
NA, NA, NA, NA, 1L, NA, NA, 1L, NA, NA, NA, NA, 2L, NA, NA, NA,
NA, NA), Q530 = c(NA, NA, NA, NA, NA, 4L, NA, NA, 4L, NA, NA,
NA, NA, 4L, NA, NA, NA, NA, NA), Q531 = c(NA, NA, NA, NA, NA,
1.5, NA, NA, 1.5, NA, NA, NA, NA, 1.5, NA, NA, NA, NA, NA), Q534 = c(1L,
NA, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, 2L,
NA, 2L), Q535 = c(6L, NA, NA, NA, NA, NA, NA, NA, NA, 6L, NA,
NA, NA, NA, NA, NA, 6L, NA, 6L), Q536 = c(3L, NA, NA, NA, NA,
NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA, 3L, NA, 3L), Q539 = c(NA,
1L, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA,
NA, NA), Q540 = c(NA, 3, NA, NA, NA, NA, 7.5, NA, NA, NA, NA,
NA, 7.5, NA, NA, NA, NA, NA, NA), Q541 = c(NA, 7.5, NA, NA, NA,
NA, 3, NA, NA, NA, NA, NA, 3, NA, NA, NA, NA, NA, NA), Q593 = c(NA,
NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, 1L, NA,
NA, NA), Q594 = c(NA, NA, NA, NA, 14L, NA, NA, NA, NA, NA, NA,
4L, NA, NA, NA, 14L, NA, NA, NA), Q595 = c(NA, NA, NA, NA, 7L,
NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, 7L, NA, NA, NA), Q598 = c(NA,
NA, NA, 1L, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, 1L, NA, NA,
NA, NA), Q599 = c(NA, NA, NA, 17.5, NA, NA, NA, NA, NA, NA, 17,
NA, NA, NA, 17.5, NA, NA, NA, NA), Q600 = c(NA, NA, NA, 7L, NA,
NA, NA, NA, NA, NA, 7L, NA, NA, NA, 7L, NA, NA, NA, NA), Condition = c("G_B1",
"G_B2", "G_A1", "G_C2", "G_C1", "G_A2", "G_B2", "G_A1", "G_A2",
"G_B1", "G_C2", "G_C1", "G_B2", "G_A2", "G_C2", "G_C1", "G_B1",
"G_A1", "G_B1")), row.names = c(NA, -19L), class = c("tbl_df",
"tbl", "data.frame"))
codebook<-tibble::tribble(
~Condition, ~QuestionID, ~Correct_Answer,
"G_A1", "Q134", 1,
"G_A1", "Q135", 3,
"G_A1", "Q136", 1.5,
"G_A2", "Q529", 1,
"G_A2", "Q530", 4,
"G_A2", "Q531", 1.5,
"G_B1", "Q534", 1,
"G_B1", "Q535", 6,
"G_B1", "Q536", 3,
"G_B2", "Q539", 1,
"G_B2", "Q540", 7.5,
"G_B2", "Q541", 3,
"G_C1", "Q593", 1,
"G_C1", "Q594", 14,
"G_C1", "Q595", 7,
"G_C2", "Q598", 1,
"G_C2", "Q599", 17.5,
"G_C2", "Q600", 7
)
I've never made a loop or a function before, so I could use some help thinking this through.