2015-02-23 95 views
0

试图将多个变量合并为二分变量。我想使用OR运算符“|”来根据原始变量中的条件值分配新值,IfElse with OR运算符

数据帧c具有与值 “原因” 一栏( “回答”, “不能谈”, “called_back”, “悬而未决”, “语音邮件”)

# Collapse several responses into one value 
c$answered <- if(c$reason == "answered" | 
        "couldNotTalk" | 
        "called_back") 
        {c$answer == "answered"} 
       else {c$unanswer == "not answered"} 

这不是工作,但下面是(即使它是有效的):

"Answered" -> c$answer[c$reason == "answered"] 
"Answered" -> c$answer[c$reason == "couldNotTalk"] 
"Answered" -> c$answer[c$reason == "called_back"] 

回答

3

在这种情况下,而不是做一个或一堆的的,你可以使用%in%,为例子

c$reason %in% c("answered", "couldNotTalk", "called_back") 

然后,为了使用此值而不是使用if,您可以使用名为ifelse()的矢量化版本。

c$answered <- ifelse(
    c$reason %in% c("answered", "couldNotTalk", "called_back"), 
    "answered", 
    "not answered" 
) 

或当然你也可以

+0

感谢。第二个是我想要做的,所以是完美的。 – Jebediah15 2015-02-23 17:58:29