R 具有多个类别的ifelse语句

R 具有多个类别的ifelse语句,r,if-statement,sequence,R,If Statement,Sequence,我有一个带数字的向量,看起来像这样:c(52.2,76.3,16.1,85.8)。我想确定seq(15,90,5)中每个值所在的区间,并用表示特定区间/类别的数字创建一个新向量 下面的函数可以工作,但看起来相当麻烦,所以希望有人能帮助我使其更高效/简洁 testfun <- function(x){ ifelse(x>=15 & x<20, 1, ifelse(x>=20 & x<25, 2, ifelse(x>=25 & x<3

我有一个带数字的向量,看起来像这样:
c(52.2,76.3,16.1,85.8)
。我想确定
seq(15,90,5)
中每个值所在的区间,并用表示特定区间/类别的数字创建一个新向量

下面的函数可以工作,但看起来相当麻烦,所以希望有人能帮助我使其更高效/简洁

testfun <- function(x){
ifelse(x>=15 & x<20, 1, ifelse(x>=20 & x<25, 2, ifelse(x>=25 & x<30, 3, 
ifelse(x>=30 & x<35, 4, ifelse(x>=35 & x<40, 5, ifelse(x>=40 & x<45, 6, 
ifelse(x>=45 & x<50, 7, ifelse(x>=50 & x<55, 8, ifelse(x>=55 & x<60, 9, 
ifelse(x>=60 & x<65, 10, ifelse(x>=65 & x<70, 11, ifelse(x>=70 & x<75, 12,
ifelse(x>=75 & x<80, 13, ifelse(x>=80 & x<85, 14, ifelse(x>=85 & x<90, 15, 
ifelse(x>=85 & x<90, 16, NA))))))))))))))))}

> testfun(c(52.2,76.3,16.1,85.8))
[1]  8 13  1 15
testfun=15&x=20&x=25&x=30&x=35&x=40&x=45&x=50&x=55&x=60&x=65&x=70&x=75&x=80&x=85&x=85&x测试fun(c(52.2,76.3,16.1,85.8))
[1]  8 13  1 15
非常感谢


请随意编辑此问题/标题

使用
剪切
并指定
标签

You can use `cut` for example

 as.numeric(cut(c(52.2,76.3,16.1,85.8), breaks = seq(15,90,5)))

[1]  8 13  1 15
x <- c(52.2,76.3,16.1,85.8 , 90 )    
cut( x , breaks = seq(15,90,5) , labels = c(1:15) , include.lowest = TRUE )
#[1] 8  13 1  15
#Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

x hi@jdharison,想对您的答案的评论发表评论,但无法发表评论,因为它现在已被删除。我认为,尽管它没有完全回答OP的实际问题,但这是一次很好的尝试,不应该受到一些人的攻击。我希望这次冒犯是开玩笑的,是为了回应你的;),这里的人一般都很友好,但不管怎样,我希望你不要泄气,继续参加StackOverflow.lol@Aaron没有冒犯你。我本来会详细说明我的答案的,但是那些家伙在评论中把它写得很好,所以我觉得最好收回答案,这样有人可以写一个更完整的答案。