为数据框中的列的每个值指定级别

时间:2014-07-14 11:00:55

标签: r

我的问题很简单但不知何故我无法理解。

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

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 个答案:

答案 0 :(得分:3)

这应该这样做:

as.integer(factor(a))

或者这可能更好:

match(a, unique(a))

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

此外,

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