首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他列的某些条件创建新列的Ifelse语句链

根据其他列的某些条件创建新列的Ifelse语句链
EN

Stack Overflow用户
提问于 2019-09-04 12:53:48
回答 2查看 67关注 0票数 1

我的参与者被问到一个问题(cle1i2),并可能回答是(1)或否(0)。

其中,谁回答是,再次被问到另一个问题(cle2i2),是(1)或否(0)可能的答案。

现在,在R中,我想创建一个新列(cle7_P),其中的值取决于以下条件。

这些条件就是这些条件,应该一起实施;

  1. 如果cle1i2是NA,cle2i2是NA,那么cle7_P就是NA;
  2. 如果cle1i2为0,cle2i2为NA,则cle7_P为0;
  3. 如果cle1i2为1,cle2i2为1,则cle7_P为1;
  4. 如果cle1i2为1,cle2i2为0,则cle7_P为0;
  5. 如果cle1i2为1,cle2i2为NA,则cle7_P为NA;

到目前为止,这是我尝试过的,但是当我手动检查数据时,它不起作用。

代码语言:javascript
复制
library(dplyr)
library(tidyverse)

h$pcle7_P %>% 
  (ifelse(is.na( cle1i2) & is.na( cle2i2), 
       yes = NA, 
       no = ifelse( cle1i2 == 0 & is.na( cle2i2), 
          yes = 0, 
          no = ifelse( cle1i2 == 1 & cle2i2 == 1, 
              yes = 1, 
              no = ifelse( cle1i2 == 1 & cle2i2 == 0, 
                  yes = 0, 
                  no = ifelse( cle1i2 == 1 & is.na(cle2i2), 
                      NA))))))



h <- h %>%
  mutate( pcle7_P = ifelse(cle1i2 == NA | cle2i2 == NA, 
    yes = NA, 
    no = ifelse(cle1i2 == 0 | cle2i2 == NA, 
        yes =0, 
        no = ifelse(cle1i2 == 1 | cle2i2 == 1, 
            yes = 1, 
            no = ifelse(cle1i2 == 1 | cle2i2 == 0, 
                yes = 0, 
                no = ifelse(cle1i2 == 1 | cle2i2 == NA), 
                    NA)))))

我期望有一个新的列,它的值将根据条件而定。

你能帮帮我吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-09-04 13:04:31

您可以尝试case_when,它非常适合多个ifelse

代码语言:javascript
复制
library(tidyverse)
h %>% 
  mutate(pcle7_P = case_when(is.na(cle1i2) & is.na(cle2i2) ~ NA_real_,
                             cle1i2 == 0 ~ 0,
                             cle1i2 == 1 & cle2i2 == 1 ~ 1,
                             cle1i2 == 1 & cle2i2 == 0 ~ 0, 
                             cle1i2 == 1 & is.na(cle2i2) == 1 ~ NA_real_))
票数 2
EN

Stack Overflow用户

发布于 2019-09-04 13:07:25

你的第二次尝试可能会成功,但请记住

代码语言:javascript
复制
> NA == NA
[1] NA

您需要像第一次尝试时那样使用is.na(cle1i2)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57788850

复制
相关文章

相似问题

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