我的情绪反应数据库很长,我需要根据受试者中其他两个变量的特定行创建一个变量。
随后的数据帧包括两个参与者(“人”)的数据,这些参与者呈现2张图片(P1,P2,P3),每个图片具有3个重复(R1,R2,R3),这是“相位”变量。可变的响应包括两件事:每个演示文稿的等级(从-30到30)和每张图片所经历的情感。
person <- c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2)
block <- c(4, 4, 4, 5, 5, 5, 8, 8, 4, 4, 4, 5, 5, 5, 8, 8)
phase <- c("P1R1", "P1R2", "P1R3", "P2R1","P2R2","P2R3", "Post1", "Post2","P1R1",
"P1R2", "P1R3", "P2R1","P2R2","P2R3", "Post1", "Post2")
response <- c(30, 30, 30, -30, -30, -30, "Happy", "Sad", 28, 27, 25, -23, -24,
-22, "Excited", "Scared")
df <- data.frame(person, block, phase, emotion, response)
我需要创建一个新的列,该列将基于块编号并给我每张图片的情感。
我希望将新列称为“后调查”,并希望其如下所示:
postsurvey <-c ("Happy", "Happy", "Happy","Sad","Sad", "Sad", NA, NA,
"Excited", "Excited", "Excited", "Scared", "Scared", "Scared", NA, NA)
df <- data.frame(person, block, phase, emotion, response, postsurvey)
我使用的代码是:
df<-df %>% group_by(person, block) %>%
mutate(postsurvey=if(block==4){response[phase=="Post1"]}
else if (block==5){response[phase=="Post2"]}
else {print("NA")})
我希望每个受检者对于每个模块号都收到相同的响应,但是我得到的是,响应没有按受检者分组,也没有在受检者中按模块号重复,就像有一个情绪矢量,一个人得到的情感不是他的。
*在我的原始数据中,每个主题有4张图片,重复10次,因此“ else if”代码重复了两个以上的条件。