2013-03-27 2 views
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 (где находятся числа 1 в б) значения в равны. в положениях 2 и 5 (где - числа 2 в b) значения в a равны. и т.д ...

Спасибо

ответ

2

Вы можете использовать as.numeric() на фактор, чтобы получить это:

a <- c(11,14,11,22,14,22) 
as.numeric(factor(a)) 
# [1] 1 2 1 3 2 3 
0

Вот одна функция Thats quickily сделал:

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 
Смежные вопросы