如何通过另一个变量对data.frame列进行排序

时间:2017-08-15 20:41:25

标签: r sorting dataframe

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

我想根据score为每个id从最小到最大对我的data.frame进行排序。

score排序简化忽略id列。

> 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

基本上,我希望我的输出是

  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

2 个答案:

答案 0 :(得分:2)

您可以使用dplyr包:

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

答案 1 :(得分:2)

仅使用match_parent

base R