我正在尝试用两个列表("list1"
和"list2"
(对实验中的一些变量进行重新编码。
id
本应在每个实验条件之间匹配,但不幸的是,它们并不匹配。我找到的唯一解决方案是使用recode_if()
功能:
olives <- olives %>%
mutate(id = recode_if(id, id == 1 & list == "list1", "1" = "9"))
olives
虽然R没有给我错误信息,但我没有看到任何变化。
我的意图如下:
如果项目在列表1中,并且
id
为1,则将id = 1
更改为id = 9
如果项目在列表1中,而
id
为2,则将id = 2
更改为id = 10
等
错误可能在哪里?
dput(head(olives))
structure(list(subject = c(NA, 128, 128, 128, 128, 128), X2 = c(NA,
NA, NA, NA, NA, NA), birth_year = c(NA, 1997, 1997, 1997, 1997,
1997), X4 = c(NA, NA, NA, NA, NA, NA), birth_month = c(NA, 8,
8, 8, 8, 8), X6 = c(NA, NA, NA, NA, NA, NA), native_language = c(NA,
"Greek", "Greek", "Greek", "Greek", "Greek"), X8 = c(NA, NA,
NA, NA, NA, NA), Multilingual = c(NA, "Yes", "Yes", "Yes", "Yes",
"Yes"), X10 = c(NA, NA, NA, NA, NA, NA), Dyslexic = c(NA, "No",
"No", "No", "No", "No"), X12 = c(NA, NA, NA, NA, NA, NA), Sex = c(NA,
"Female", "Female", "Female", "Female", "Female"), X14 = c(NA,
NA, NA, NA, NA, NA), HandPreference = c(NA, "Right", "Right",
"Right", "Right", "Right"), X16 = c(NA, NA, NA, NA, NA, NA),
rt = c(NA, NA, NA, 5602, NA, NA), stimulus = c(NA, NA, NA,
"Η μεταφορική εταιρία είναι στη Λάρισα",
NA, NA), trial_index = c(NA, 15, 17, 18, 20, 22), time_elapsed = c(NA,
139855, 146511, 152621, 159248, 167898), list = c(NA, "list1",
"list1", "list1", "list1", "list1"), button_pressed = c(NA,
NA, NA, 0, NA, NA), rt1 = c(NA, 313, 216, NA, 246, 191),
rt2 = c(NA, 545, 139, NA, 196, 327), rt3 = c(NA, 337, 416,
NA, 212, 320), rt4 = c(NA, 139, 373, NA, 314, 426), rt5 = c(NA,
396, 326, NA, 345, 427), rt6 = c(NA, 333, 631, NA, 540, 481
), id = c(NA, 14, 1, 1, 7, 11), item_type = c(NA, "ZZM",
"ZYM", "QZYM", "ZYM", "ZZMM"), expected_answer = c(NA, NA,
NA, "Λάθος", NA, NA), answer = c(NA, NA, NA, "Λάθος",
NA, NA), correct = c(NA, NA, NA, TRUE, NA, NA), integer_correct = c(NA,
NA, NA, 1, NA, NA)), row.names = c(NA, 6L), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"))
尝试%in%
:问题可能与==
完全匹配。
library(dplyr)
olives %>%
mutate(id = case_when(item %in% list1 & id == 1 ~9,
item %in% list2 & id == 2 ~10,
TRUE ~ id))