我的问题很简单,但不知何故我无法弄清楚。为数据框中列的每个值指定级别
我有一个递增的数值向量,其中的值不是唯一的。
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)
有人可以帮助我,我该如何实现它?
我的问题很简单,但不知何故我无法弄清楚。为数据框中列的每个值指定级别
我有一个递增的数值向量,其中的值不是唯一的。
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)
有人可以帮助我,我该如何实现它?
这应做到:
as.integer(factor(a))
或者,这可能是更好:
match(a, unique(a))
使用cumsum
和diff
,希望它有帮助,谢谢。
b=cumsum(c(TRUE,diff(a)!=0))
b
[1] 1 2 3 3 4 4 4 5 6 7 7 8
此外,
findInterval(a, unique(a))
#[1] 1 2 3 3 4 4 4 5 6 7 7 8
我想'factor'版本是很整洁。 – thelatemail
谢谢@MadScone。它也回答了我的后续问题。:) –