[英]R function to assign value based on multiple columns
我有一个函数可以根据b列中的条目为数据框的c列分配一个值(猫,狗或兔子):
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和b的值。 因此,例如,条件可能是:A:仅当mydf $ a == 1和mydf $ b == 1时才分配cat; B:无论mydf $ a的值是什么,只要mydf $ a == 2,并且mydf $ a == 3&mydf $ b == 5时,就分配狗。 C:将兔子分配给其他情况。 在语法上遇到麻烦,无法从以前的文章中找到示例。
您可以尝试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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.