从向量中我正在寻找一个函数(快速计算),它返回一个数字介于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中的值相等。 等...
谢谢
答案 0 :(得分:2)
您可以在某个因素上使用as.numeric()
来获取此信息:
a <- c(11,14,11,22,14,22)
as.numeric(factor(a))
# [1] 1 2 1 3 2 3
答案 1 :(得分: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