【发布时间】:2021-08-05 02:08:27
【问题描述】:
对 R 非常陌生,我正在尝试根据不同的条件创建一个变量“准确度”:
如果第一行是 Image2,并且从第 2 行到第 40 行中选择了 image2,则分配 1。如果第一行是 Image2,并且从第 42 到 80 行中选择了 image1,则分配 1。如果第一行是 Image1,并且 image1 是从第 2 行到第 40 行中选择然后分配 1。如果第一行是 Image1,并且从第 42 到第 80 行中选择 image2 然后分配 1
如果都不满足,则赋值为 0。
前 2 条语句可以正常工作,但后 2 条语句不行,任何建议都将不胜感激
data1$Accuracy <- ifelse(data1$Correct_image[1] == "Image2" & between(data1$Trial_number, 2, 40) & data1$Image_selected == "image2", 1,
ifelse(data1$Correct_image[1] == "Image2" & between(data1$Trial_number, 42, 80) & data1$Image_selected == "image1", 1,
ifelse(data1$Correct_image[1] == "Image1" & between(data1$Trial_number, 2, 40) & data1$Image_selected == "image1", 1,
ifelse(data1$Correct_image[1] == "Image1" & between(data1$Trial_number, 42, 80) & data1$Image_selected == "image2", 1, 0))))
【问题讨论】:
-
一种可能性是使用
case_when,它允许您向量化多个 if else 语句。 -
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。
标签: r if-statement variables