【发布时间】:2019-09-04 12:53:48
【问题描述】:
我的参与者被问到一个问题 (cle1i2),可能的答案是是 (1) 或否 (0)。
其中回答“是”的人再次被问到另一个问题 (cle2i2),有“是”(1) 或“否”(0) 个可能的答案。
现在,在 R 中,我想创建一个新列 (cle7_P),其中的值取决于以下条件。
条件就是这些,应该一起执行;
如果 cle1i2 是 NA AND cle2i2 是 NA,那么 cle7_P 是 NA;
如果 cle1i2 为 0 AND cle2i2 为 NA,则 cle7_P 为 0;
如果 cle1i2 为 1 AND cle2i2 为 1,则 cle7_P 为 1;
如果 cle1i2 为 1 AND cle2i2 为 0,则 cle7_P 为 0;
如果 cle1i2 为 1 AND cle2i2 为 NA,则 cle7_P 为 NA;
这是我迄今为止尝试过的,但是当我手动检查数据时它不起作用。
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)))))
我希望有一个新列,其中包含根据条件的值。
你能帮帮我吗?谢谢
【问题讨论】:
-
请您提供一些示例数据和预期输出,例如
dput(head(my_data)) -
您的最后一个嵌套 ifelse 似乎缺少“非”条件?
标签: r dataframe if-statement