r - R cut 超越边界的漂亮打印值
问题描述
R中是否有一些功能可以在某些值超出时漂亮地打印转换为因子的数字向量breaks
?所需的输入和输出是
data <- seq(5, 95, 10)
result <- cutSpecial(data, breaks = c(30, 40, 50, 60, 70))
disc <- c("<30", "<30", "<30", "[30, 40)", "[40, 50)", "[50, 60)", "[60, 70)",
+ ">70", ">70", ">70")
cbind(data, disc)
data disc
[1,] "5" "<30"
[2,] "15" "<30"
[3,] "25" "<30"
[4,] "35" "[30, 40)"
[5,] "45" "[40, 50)"
[6,] "55" "[50, 60)"
[7,] "65" "[60, 70)"
[8,] "75" ">70"
[9,] "85" ">70"
[10,] "95" ">70"
基本 Rcut
函数只是将范围外的值转换为 unsatisfying NA
。R 生态系统中的功能cutSpecial
是什么?
解决方案
它将chop()
来自我的santoku
包裹:
library(santoku)
data <- seq(5, 95, 10)
chop(data, c(30, 40, 50, 60, 70))
## [1] [5, 30) [5, 30) [5, 30) [30, 40) [40, 50) [50, 60) [60, 70) [70, 95] [70, 95]
## [10] [70, 95]
## Levels: [5, 30) [30, 40) [40, 50) [50, 60) [60, 70) [70, 95]
如果你想要特定的标签,你可以自己传递它们:
chop(data, c(30, 40, 50, 60, 70), c("< 30", "[30-40)", "[40-50)", "[50-60)", "[60-70)", ">= 70"))
或者在最新版本中,您可以使用lbl_dash()
并指定first
and last
:
chop(data, c(30, 40, 50, 60, 70), labels = lbl_dash(first = "< 30", last = ">= 70"))
## [1] < 30 < 30 < 30 30 - 40 40 - 50 50 - 60 60 - 70 >= 70 >= 70 >= 70
## Levels: < 30 30 - 40 40 - 50 50 - 60 60 - 70 >= 70
默认间隔标签没有这样的参数,但也许应该有。
推荐阅读
- r - 如何创建一个 for 循环来调整 glmm 弹性网络的 lambda 和 alpha?
- mysql - 访问 phpmyadmin 在线托管后代码点火器数据库错误
- python - 当值在熊猫中其他2列的范围之间时如何聚合行的平均值
- javascript - 如何在没有 Google Apps 脚本的情况下从 Google Sheet API 获取隐藏行的信息
- javascript - 如果 HTML 返回每个引号之前都带有反斜杠会发生什么?
- r - 将列表列中的函数应用于R中的列
- javascript - 可以通过allowClear = true 选择使用哪个AntD 图标吗?
- swift - 如何让 UIPageViewController 使用过渡样式滚动?
- php - 合并两个 JSON php
- ios - 运行后 UIbutton 拉伸