2013-03-06 22 views
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,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)),但那不起作用。任何帮助将不胜感激。

+0

是'lables'一个错字? – 2013-03-07 00:47:32

回答

4

尝试factor(cut(d,3), labels=1:3)

详情?factor

顺便说一句,cut(d, 3, labels=1:3)作品对我来说也是如此。

+0

谢谢他们都工作! – user2004820 2013-03-07 00:14:44

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 
+0

如果是'...,labels = paste0(“grp”,1:3)'或任何字母,我会觉得更安全。 – 2013-03-07 00:33:12

+0

@DWin Intersting!为什么?更具可读性? – agstudy 2013-03-07 00:35:10

+1

不容易被误解。使用数字标签并不能清楚表明剪切已经完成。可以很容易地解释为数字值。 – 2013-03-07 00:37:04

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)))