Sorry for the late reply, I forgot I was going to look into this later. If you are still looking for a solution, here is one using "joins"
library(tidyverse)
example_data <- tibble::tribble(
~ResponseId, ~Q134, ~Q135, ~Q136, ~Q529, ~Q530, ~Q531, ~Q534, ~Q535, ~Q536, ~Q539, ~Q540, ~Q541, ~Q593, ~Q594, ~Q595, ~Q598, ~Q599, ~Q600, ~Condition,
36706370L, NA, NA, NA, NA, NA, NA, 1L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_B1",
35165951L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 3, 7.5, NA, NA, NA, NA, NA, NA, "G_B2",
94751328L, 1L, 3L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A1",
91438384L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 17.5, 7L, "G_C2",
21240033L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 14L, 7L, NA, NA, NA, "G_C1",
18711877L, NA, NA, NA, 1L, 4L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A2",
3822060L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 7.5, 3, NA, NA, NA, NA, NA, NA, "G_B2",
37350350L, 1L, 3L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A1",
60661688L, NA, NA, NA, 1L, 4L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A2",
79826766L, NA, NA, NA, NA, NA, NA, 1L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_B1",
30722991L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 17, 7L, "G_C2",
77534285L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, 4L, 3L, NA, NA, NA, "G_C1",
92995145L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, 7.5, 3, NA, NA, NA, NA, NA, NA, "G_B2",
80964044L, NA, NA, NA, 2L, 4L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A2",
45542745L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 17.5, 7L, "G_C2",
32141225L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 14L, 7L, NA, NA, NA, "G_C1",
29057470L, NA, NA, NA, NA, NA, NA, 2L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_B1",
56307572L, 1L, 3L, 1.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_A1",
93353922L, NA, NA, NA, NA, NA, NA, 2L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, "G_B1"
)
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
)
example_data %>%
gather(QuestionID, Answer, -ResponseId) %>%
right_join(codebook, by = "QuestionID") %>%
select(ResponseId, Condition, QuestionID, Answer, Correct_Answer) %>%
arrange(ResponseId, Condition, QuestionID) %>%
mutate(check = if_else(Answer != Correct_Answer, TRUE, FALSE))
#> # A tibble: 342 x 6
#> ResponseId Condition QuestionID Answer Correct_Answer check
#> <int> <chr> <chr> <chr> <dbl> <lgl>
#> 1 3822060 G_A1 Q134 <NA> 1 NA
#> 2 3822060 G_A1 Q135 <NA> 3 NA
#> 3 3822060 G_A1 Q136 <NA> 1.5 NA
#> 4 3822060 G_A2 Q529 <NA> 1 NA
#> 5 3822060 G_A2 Q530 <NA> 4 NA
#> 6 3822060 G_A2 Q531 <NA> 1.5 NA
#> 7 3822060 G_B1 Q534 <NA> 1 NA
#> 8 3822060 G_B1 Q535 <NA> 6 NA
#> 9 3822060 G_B1 Q536 <NA> 3 NA
#> 10 3822060 G_B2 Q539 1 1 FALSE
#> # … with 332 more rows
Created on 2020-01-23 by the reprex package (v0.3.0.9000)