首页 > 解决方案 > 如何在间隔中打破数字

问题描述

我正在尝试将信用评分降低到范围以分配他们的评级。

我试过这个:

x <- sample(510:780, 50, replace=TRUE)
cut(x, breaks=c(300, 579, 669, 739, 799), include.lowest=TRUE)

结果:

[300,579] (579,669] (669,739] (739,799]

但我想要类似的东西:

(300, 579] (580, 669] (670, 739] (740,799] (739,799]

类似于这里的范围:https ://www.experian.com/blogs/ask-experian/credit-education/score-basics/what-is-a-good-credit-score/

标签: r

解决方案


也许你可以试试下面的代码:

bks <- c(300, 579, 669, 739, 799)
bks <- sort(c(bks, bks[-c(1,length(bks))]+1))
r <- cut(x, breaks= bks, include.lowest=F)
f <- levels(r)[-seq(2,length(levels(r)),by = 2)]
r <- factor(r[r %in% f])

这样你得到:

> levels(r)
[1] "(300,579]" "(580,669]" "(670,739]" "(740,799]"

推荐阅读