首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个ifelse语句-有些语句不起作用

多个ifelse语句-有些语句不起作用
EN

Stack Overflow用户
提问于 2021-05-15 07:56:42
回答 2查看 29关注 0票数 0

对R非常陌生,我正在尝试根据不同的条件创建一个变量'Accuracy‘:

如果第一行是Image2,并且从第2到40行选择了Image2,则分配1。如果第一行是image2,并且从第42到80行选择了Image1,则分配1。如果第一行是Image1,并且从第2到40行选择了image1,则分配1。如果第一行是image1,并且从第42到80行选择了image2,则分配1

如果所有这些都不满足,则分配0。

前两个语句运行良好,但后两个不能,任何建议都将不胜感激

代码语言:javascript
复制
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))))
EN

Stack Overflow用户

发布于 2021-05-15 10:19:54

正如@yang-wu建议的那样,dplyr的case_when非常适合这种情况。

代码语言:javascript
复制
library(dplyr)
data1 %>%
  mutate(Accuracy = case_when(
    Correct_image == "Image2" & between(Trial_number,  2, 40) & Image_selected == "image2" ~ 1,
    Correct_image == "Image2" & between(Trial_number, 42, 80) & Image_selected == "image1" ~ 1,
    Correct_image == "Image1" & between(Trial_number,  2, 40) & Image_selected == "image1" ~ 1,
    Correct_image == "Image1" & between(Trial_number, 42, 80) & Image_selected == "image2" ~ 1, 
    TRUE ~ 0))))
  ))
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67542137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档