2014-07-14 36 views
0

我的问题很简单,但不知何故我无法弄清楚。为数据框中列的每个值指定级别

我有一个递增的数值向量,其中的值不是唯一的。

a <- c(1,2,4,4,7,7,7,9,12,25,25,26) 

我想创建另一个列b,它会给我向量a的每个元素的相应级别。在这里,b是:

b <- c(1,2,3,3,4,4,4,5,6,7,7,8) 

有人可以帮助我,我该如何实现它?

回答

3

这应做到:

as.integer(factor(a)) 

或者,这可能是更好:

match(a, unique(a)) 
+0

我想'factor'版本是很整洁。 – thelatemail

+0

谢谢@MadScone。它也回答了我的后续问题。:) –

1

使用cumsumdiff,希望它有帮助,谢谢。

b=cumsum(c(TRUE,diff(a)!=0)) 
b 
[1] 1 2 3 3 4 4 4 5 6 7 7 8 
1

此外,

findInterval(a, unique(a)) 
#[1] 1 2 3 3 4 4 4 5 6 7 7 8 
相关问题