Rescale vector R
•
Java
Suppose I have an integer vector, for example:
> x [1] 1 1 1 4 4 13 13 14
I'm looking for an effective way to readjust the vector to the integer 1 to the maximum number of unique elements in R So the resulting vector will be:
1 1 1 2 2 3 3 4
It looks like a simple problem, but I can't find an effective way to do it In fact, this vector is very large (about 500)
Solution
Try to match (x, sort (unique (x)):
x <- sample(1:50,1e6,replace = TRUE) benchmark(as.integer(factor(x)),match(x,sort(unique(x))),replications = 20,columns = c("test","elapsed","relative")) # test elapsed relative # 1 as.integer(factor(x)) 18.44 10.36 # 2 match(x,sort(unique(x))) 1.78 1.00 identical(as.integer(factor(x)),sort(unique(x)))) # [1] TRUE
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码