0
d <- c(3,4,2,5,4,7,6,5,8,9,5,6,3,1,2,6,3)

cut(d,3)产生以下三个级别:(0.992,3.66] (3.66,6.34] (6.34,9.01]。有没有办法将结果显示为 1、2、3 级而不是这些范围?

我希望看到结果看起来像这样(1,2,1,2,2,3,2,2,3,3,2,2,1,1,1,2,1),表明元素 d.1 位于切割 1 中,元素 d.2 位于切割 2 或中间层...

cut()它的帮助中说“如果指定了标签参数,则其值用于命名因子级别”,所以我尝试cut(d,3,lables=c(1,2,3))了,但这没有用。任何帮助将不胜感激。

4

3 回答 3

4

Try factor(cut(d,3), labels=1:3)

For details, ?factor

By the way, cut(d, 3, labels=1:3) works for me as well.

于 2013-03-06T23:59:19.517 回答
2

设置labels=FALSE,你会得到一个很好的输出:

d <- c(3,4,2,5,4,7,6,5,8,9,5,6,3,1,2,6,3)
cut(d, 3, labels=FALSE)
 [1] 1 2 1 2 2 3 2 2 3 3 2 2 1 1 1 2 1

?cut

如果标签 = FALSE,则返回简单的整数代码而不是因子。

编辑

为了避免对数值的错误解释,这里有另一种选择

cut(d, 3, labels=LETTERS[1:3])
[1] A B A B B C B B C C B B A A A B A
于 2013-03-07T00:23:29.987 回答
0

我认为这也可以:

d <- c(3,4,2,5,4,7,6,5,8,9,5,6,3,1,2,6,3)
as.numeric(factor(cut(d,3)))
于 2013-03-07T00:51:44.933 回答