2017-08-15 7 views
1
mydata <- data.frame(id = c(rep(1, 3), rep(2, 3), rep(3, 3)), 
         score = c(c(1, 2, 3), c(3, 2, 1), c(1, 3, 2)), 
         location = c(rep(c("X", "Y", "Z"), 3))) 
> mydata 
    id score location 
1 1  1  X 
2 1  2  Y 
3 1  3  Z 
4 2  3  X 
5 2  2  Y 
6 2  1  Z 
7 3  1  X 
8 3  3  Y 
9 3  2  Z 

Spalte von data.frame bestellen Ich mag würde mein data.frame sortieren nach score vom kleinsten zum größten für jeden id.Wie durch eine andere Variable

Simplying Bestellung von score ignoriert die id Spalte.

> mydata[with(mydata, order(score)),] 
    id score location 
1 1  1  X 
6 2  1  Z 
7 3  1  X 
2 1  2  Y 
5 2  2  Y 
9 3  2  Z 
3 1  3  Z 
4 2  3  X 
8 3  3  Y 

Im Grunde möchte ich meine Ausgabe dplyr Paket sein

id score location 
1 1  1  X 
2 1  2  Y 
3 1  3  Z 
4 2  1  Z 
5 2  2  Y 
6 2  3  X 
7 3  1  X 
8 3  2  Z 
9 3  3  Y 

Antwort

2

Mit base R nur.

mydata[order(mydata$id, mydata$score), ] 
    id score location 
1 1  1  X 
2 1  2  Y 
3 1  3  Z 
6 2  1  Z 
5 2  2  Y 
4 2  3  X 
7 3  1  X 
9 3  2  Z 
8 3  3  Y 
2

Sie verwenden können:

library(dplyr) 
mydata %>% arrange(id,score) 

# id score location 
# 1 1  1  X 
# 2 1  2  Y 
# 3 1  3  Z 
# 4 2  1  Z 
# 5 2  2  Y 
# 6 2  3  X 
# 7 3  1  X 
# 8 3  2  Z 
# 9 3  3  Y 
Verwandte Themen