ifelse(BL0304_t2$BAXPFC11==1 & BL0304_t2$BAXPFC21==1 &
BL0304_t2$BAXPFC31==1 & BL0304_t2$BAXPFC41==1,
BL0304_t2$passcode <-1 , BL0304_t2$passcode <- 2)
这应该给我&#34; 1&#34; for&#34;密码&#34;当&#34; BAXPFC11&#34;,&#34; BAXPFC21&#34;,&#34; BAXPFC31&#34;,&#34; BAXPFC41&#34;是&#34; 1&#34;在和条件,应该给我&#34; 2&#34;除此以外。但是这给了我&#34; 2&#34;在所有情况下。我无法理解代码有什么问题。
答案 0 :(得分:0)
ifelse
由三个论点组成:1)逻辑测试,2)如果为真,则值为3)如果为假则为值。您可以使用它来创建新对象。由于您未提供任何数据或所需数据。这是我猜你想要的......
BL0304_t2$passcode=ifelse(BL0304_t2$BAXPFC11==1 & BL0304_t2$BAXPFC21==1 &
BL0304_t2$BAXPFC31==1 & BL0304_t2$BAXPFC41==1,1,2)
正如@Pascal评论的那样,您还可以修改代码以使用with()
最小化字符,如下所示:
BL0304_t2$passcode=with(BL0304_t2,ifelse(BAXPFC11==1 & BAXPFC21==1 &
BAXPFC31==1 & BAXPFC41==1,1,2))