2014-12-02 19 views

risposta

1

ne dite:

within(x, rank2 <- rank(order(v2, v1), ties.method='first')) 

# v1 v2 rank1 rank2 
# 1 2 1  1  2 
# 2 1 1  2  1 
# 3 1 3  4  4 
# 4 2 2  3  3 
+1

Prima, 'ties.method' non è necessario,' order' non avrà legami. Secondo, fallisce con questi dati: 'x <- data.frame (v1 = c (2,3,1,2,1), v2 = c (1,1,3,2,1))', quindi è semplicemente sbagliato – user

2

order opere, ma per manipolare i frame di dati, controllare anche i pacchetti plyr e dplyr.

> arranged_x <- arrange(x, v2, v1) 
0

Qui creiamo una sequenza di numeri e poi riordinare come se è stato creato nei pressi dei dati ordinata:

x$rank <- seq.int(nrow(x))[match(rownames(x),rownames(x[order(x$v2,x$v1),]))] 

Oppure:

x$rank <- (1:nrow(x))[order(order(x$v2,x$v1))] 

O anche:

x$rank <- rank(order(order(x$v2,x$v1))) 
Problemi correlati