4

使用该cut()函数,我知道如何获取一个数字向量并根据半开区间对其进行分类

(0, 10], (10. 19], (19, 20], (20, 26], etc...

或者

[0, 10), [10, 19), [19, 20), [20, 26), etc....

如何将向量合并为闭区间和开区间的组合,例如

(0, 10), [10, 20], (20, 29], (29, 48), [48], (48, 56), etc...?

请注意,我想创建一个由单个数字组成的封闭区间。

有没有办法使用该cut()功能或​​其他功能来做到这一点?是时候推出新功能了吗?!

编辑

boyScale <- function(x) {
ret <- 
ifelse(x < 16.3,  1,
ifelse(x = 16.3,  2,
ifelse(x < 20.8,  3,
ifelse(x = 20.8,  4,
ifelse(x < 21.91, 5,
ifelse(x = 21.91, 6,
ifelse(x < 28.2,  7,
ifelse(x = 28.2,  8,
ifelse(x < 37.3,  9,
ifelse(x = 37.3, 10, 11))))))))))
return(ret)
}

我用数字 25.24 进行了尝试,并收到以下错误消息

Error in ifelse(x = 16.3, 2, ifelse(x < 20.8, 3, ifelse(x = 20.8, 4, ifelse(x < : unused argument (x = 16.3) 

有任何想法吗?

4

2 回答 2

2

我发现使用包fancycut可以很容易地解决这个问题。

fancycut(x,c('(0,10)','[10,20]','(20,29)',...))
于 2017-01-06T04:55:57.187 回答
0

如果您的输入数据和想要的没有。的箱子都不是太大,你可以使用嵌套ifelse的s。

y <- ifelse(x < 10, 1,
     ifelse(x <= 20, 2,
     ifelse(x < 30, 3,
     ifelse(x < 48, 4,
     ifelse(x <= 48, 5, .....)))))

您可以利用数据中的任何结构吗?

于 2013-06-05T07:00:31.327 回答