问题描述
我正在尝试使用 cut
创建一个标签,这是示例
> cut(c(1,5,10,15,160),c(0,Inf))
[1] (0,5] (0,5] (5,10] (10,15] (15,Inf]
Levels: (0,5] (5,10] (10,15] (15,Inf]
我想自动创建这样的标签
"1~5" "6~10" "11~15" "15+"
有什么办法可以自动完成吗?
解决方法
如果您想在不手动指定标签的情况下自动执行此操作,您可以执行以下操作:
vec <- c(1,5,10,15,160)
breaks <- c(0,Inf)
n <- length(breaks)
labels <- paste(breaks[-n] + 1,breaks[-1],sep = '~')
labels[length(labels)] <- paste0(breaks[n - 1],'+')
cut(vec,breaks,labels)
#[1] 1~5 1~5 6~10 11~15 15+
#Levels: 1~5 6~10 11~15 15+