0

从向量 a 我正在寻找一个函数(快速计算),它返回一个向量,其数字介于 1 和向量 a 中的级别数之间,并指示哪些值相等。

我知道如何使用 for 循环来做到这一点,但运行起来有点慢。

a=vector(11,14,11,22,14,22)

levels(as.factor(a))==3

解决方案

 b=vector(1,2,1,3,2,3)

这意味着在位置 1 和 3(b 中的数字 1 所在的位置)a 中的值相等。在位置 2 和 5(b 中的数字 2 在哪里),a 中的值相等。ETC...

谢谢

4

2 回答 2

2

你可以使用as.numeric()一个因素来得到这个:

a <- c(11,14,11,22,14,22)
as.numeric(factor(a))
# [1] 1 2 1 3 2 3
于 2013-03-27T15:34:02.957 回答
0

这是一个快速完成的功能:

numberfun <- function(x){y <- unique(x)
                         match(x,y)}

a <- c(11,14,11,22,14,22)
numberfun(a)
#[1] 1 2 1 3 2 3

a <- c(99,99,22,22,44,22,99)
numberfun(a)
#[1] 1 1 2 2 3 2 1
于 2013-03-27T15:59:10.300 回答