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
答案 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