在R中的两个数之间,即5 <= R> 7

use*_*580 3 r

我只是想找到一种方法来识别数据集中介于两个值之间的数字.到目前为止我所做的是使用ifelse即

ifelse(score<=5,1,ifelse(score<=7,2,3))
Run Code Online (Sandbox Code Playgroud)

这已经奏效,但我想知道你们是否知道更好的方法找到5 <= R> 7,

谢谢

詹姆士

Mat*_*erg 5

findInterval几乎是你想要的,但是间隔开右边.通过否定视线中的所有内容进行反转可以得到封闭的右侧间隔.

你的代码:

x <- function(score) ifelse(score<=5,1,ifelse(score<=7,2,3))
Run Code Online (Sandbox Code Playgroud)

一种findInterval方法:

y <- function(score) 3 - findInterval(-score, -c(7,5))
Run Code Online (Sandbox Code Playgroud)

结果:

> x(1:20)
 [1] 1 1 1 1 1 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3
> y(1:20)
 [1] 1 1 1 1 1 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3
Run Code Online (Sandbox Code Playgroud)