R函数有多个运算符

时间:2018-02-12 16:29:48

标签: r binning

数据范围从-6到6,我正在尝试创建3个类别,但即使有人在场,我的功能也没有为类别2返回任何人

FFMIBMDcopdcases$lowBMD = ifelse((FFMIBMDcopdcases$copd_Tscore >= -1) , 0,
                        ifelse((FFMIBMDcopdcases$copd_Tscore < -1), 1,
                        ifelse((FFMIBMDcopdcases$copd_Tscore <= -2.5), 2, NA)))

2 个答案:

答案 0 :(得分:0)

尝试使用cut功能。例如:

myValues <- runif(n = 20, min = -6, max = 6)

as.numeric(as.character(cut(x = myValues, breaks = c(-Inf, -2.5, -1, Inf), labels = c(2, 1, 0))))

答案 1 :(得分:0)

由于您需要数值结果,因此最简单的方法是使用findInterval,尽管您需要从2中减去结果以获得相反的顺序(2表示最低,0表示最高):

FFMIBMDcopdcases$lowBMD = 2 - findInterval(FFMIBMDcopdcases$copd_Tscore , 
                                                      c(-Inf, -2.5, -1,  Inf) )