r - 在标签间隔中用符号切割变量
问题描述
与其手动写出区间标签,人们会如何将符号放在+
变量的最终区间中,例如cut
?
我可以像这样剪切一个变量:
set.seed(1)
variab <- sample(0:100, 100, replace = FALSE)
variab
table(cut(variab, breaks = c(0, 1:4, Inf), include.lowest=TRUE))
# [0,1] (1,2] (2,3] (3,4] (4,Inf]
# 2 1 0 1 96
如果我想输入一个符号,我可以这样做:
table(cut(variab, breaks = c(0, 1:4, Inf), include.lowest=TRUE, labels = c(0:3, "4+")))
# 0 1 2 3 4+
# 2 1 0 1 96
但我想要的是:
# [0,1] (1,2] (2,3] (3,4] (4, 4+]
# 2 1 0 1 96
另外,我还想在dplyr
管道深处执行此操作:
library(tidyverse)
df <- data.frame(variab)
df %>%
mutate(cut(variab, breaks = c(0, 1:4, Inf), include.lowest=TRUE))
我确定答案在某处,但我无法找到它。
谢谢
解决方案
这些levels
是字符值,您可以使用更改级别sub
。
var <- cut(variab, breaks = c(0, 1:4, Inf), include.lowest=TRUE)
levels(var) <- sub('Inf', '4+', levels(var))
table(var)
#var
# [0,1] (1,2] (2,3] (3,4] (4,4+]
# 2 1 0 1 96
对于数据框中的数据,您可以执行以下操作:
df %>%
mutate(var = cut(variab, breaks = c(0, 1:4, Inf), include.lowest=TRUE),
var = sub('Inf', '4+', var))
推荐阅读
- java - Java 应用程序中的 Axon - 对事件处理程序错误作出反应
- python - 是否可以混合 pydantic BaseModels 和 Starlette Request?
- swift - 在 TableViewCell 中执行 UIDocumentPickerView
- xero-api - Xero API,以“草稿”状态为 PayRun 创建工资单
- javascript - 重新渲染行数 React
- api - 我无法使用 Postman 或 cURL 获取问题令牌
- html - 按钮标题不相邻
- assembly - ARM汇编代码理解与转换
- azure - 学习微软 Azure 云
- php - QuickBooks Web 连接器问题