r - 如何在间隔中打破数字
问题描述
我正在尝试将信用评分降低到范围以分配他们的评级。
我试过这个:
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]
解决方案
也许你可以试试下面的代码:
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]"
推荐阅读
- c++ - 我的程序中出现 segsigv 错误的原因是什么?
- python - 如何解决在 Kivy 中没有属性“文本”的 NoneType 对象?
- python-3.x - Windows 注册表 DWORD 修改
- coq - 转换正式语言的声明
- java - java.lang.String 类型的值失败无法转换为 JSONObject
- linq - .Include 是否仍在 Entity Framework Core 和 .NET 5.0 上工作?
- ios - 在 Swift 中,如何访问与自定义单元格中的图像交互的行的 indexPath
- javascript - 添加删除 tr td 行而不单击打开 4 字段并单击后一一打开?
- c++ - 如何比较两个相等但一个按升序排列而另一个按降序排列的数组?
- python - 为什么 ctrl+c 必须是导致错误的组合(例如 KeyboardInterrupt)?