R函数根据多列赋值

时间:2014-10-28 07:21:50

标签: r function sapply

我有一个函数,根据b列中的条目为数据帧的c列赋值(cat,dog或rabbit):

mydf <- data.frame(a = c(1:4), b= c(1,3,5,9))
myfunction <- function(x) { 
if(x == 1 | x == 2) y <- "cat"
if(x > 2 & x < 6) y <- "dog"
if(x > 6) y <- "rabbit"
return(y)
 }
mydf$c <- sapply(mydf$b,myfunction)

现在我想编写一个函数,使赋值以列a AND b的值为条件。例如,条件可能是: 答:当且仅当mydf $ a == 1&amp; mydf $ b == 1; B:只要mydf $ a == 2,就会分配狗,无论mydf $ b的值如何,以及mydf $ a == 3&amp; mydf $ b == 5; C:为其他病例分配兔子。语法有些问题,找不到上一篇文章的例子。

1 个答案:

答案 0 :(得分:0)

您可以尝试ifelse

 indx <- as.character(interaction(mydf,sep=""))
 mydf$c <- ifelse(indx=='11', 'cat', 
       ifelse(substr(indx,1,1)=='2'|indx=='35', 'dog', 'rabbit')) 

 mydf
 #  a b      c
 #1 1 1    cat
 #2 2 3    dog
 #3 3 5    dog
 #4 4 9 rabbit