样本数据:
x<-runif(100, min=0, max=1)
y<-runif(100, min=0, max=1)
dif<-x-y
dat<-data.frame(x,dif)
我想要做的是在数据框中创建另一列dat
called suit
. If x
小于 0.15 并且dif
小于 0,比suit
值应为 3。如果x
小于 0.15 并且dif
大于 0,大于suit
值应为 2 并且如果dif
大于 0,大于suit
值为 1。
这是我准备的代码。
if(dat$x<0.15 & dat$dif<0){
dat$suit<-3
} else {
if(dat$x>=0.15 & dat$dif<0){
dat$suit<-2
} else {
dat$suit<-1
}
}
它给出了所有的值dat$suit
1.我不确定我在这里做错了什么。
感谢您的帮助。
这可以使用以下任一方法完成ifelse
with(dat, ifelse(x < 0.15 & dif <0, 3, ifelse(x > 0.15 & dif < 0, 2, 1)))
Or
with(dat, as.numeric(factor(1+4*(x < 0.15 & dif < 0) + 2*(x>=0.15 & dif < 0))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)