如何对R数据框中的一列进行升序排序,另一列进行降序排序?


对R数据框的列进行排序并不困难,但有时我们希望以相反的顺序对它们进行排序,例如,我们可能希望将某些列按升序排序,而另一些列按降序排序。排序目的的这种变化使其变得稍微复杂了一些。因此,我们可以使用排序函数的否定来对我们希望按降序排序的列进行排序。

示例

考虑以下数据框 -

 实时演示

set.seed(111)
x1<-rnorm(20,2)
x2<-rpois(20,5)
x3<-sample(1:10,20,replace=TRUE)
x4<-sample(1:50,20)
x5<-rpois(20,10)
x6<-sample(1:100,20)
df<-data.frame(x1,x2,x3,x4,x5,x6)
df

输出

x1 x2 x3 x4 x5 x6
1 2.2352207 6 7 18 14 4
2 1.6692641 4 5 32 11 35
3 1.6883762 6 1 19 12 74
4 -0.3023457 8 10 33 14 65
5 1.8291240 5 10 25 8 9
6 2.1402782 4 7 27 10 55
7 0.5025733 4 4 28 7 83
8 0.9898116 7 4 44 10 47
9 1.0515244 6 1 11 9 88
10 1.5060378 7 9 31 13 67
11 1.8263259 6 6 12 12 48
12 1.5934012 5 8 41 13 44
13 3.8456363 1 3 6 8 27
14 2.3940541 4 10 39 9 58
15 2.7975285 12 8 38 13 10
16 0.4333346 5 10 50 11 99
17 1.9141490 5 1 9 6 40
18 1.6408605 5 9 40 6 32
19 0.8063910 2 10 35 8 5
20 2.3641867 7 10 36 6 15

将第1列按升序排序,并根据第1列对第6列进行排序 -

示例

df[order(df[,1],-df[,6]),]

输出

x1 x2 x3 x4 x5 x6
4 -0.3023457 8 10 33 14 65
16 0.4333346 5 10 50 11 99
7 0.5025733 4 4 28 7 83
19 0.8063910 2 10 35 8 5
8 0.9898116 7 4 44 10 47
9 1.0515244 6 1 11 9 88
10 1.5060378 7 9 31 13 67
12 1.5934012 5 8 41 13 44
18 1.6408605 5 9 40 6 32
2 1.6692641 4 5 32 11 35
3 1.6883762 6 1 19 12 74
11 1.8263259 6 6 12 12 48
5 1.8291240 5 10 25 8 9
17 1.9141490 5 1 9 6 40
6 2.1402782 4 7 27 10 55
1 2.2352207 6 7 18 14 4
20 2.3641867 7 10 36 6 15
14 2.3940541 4 10 39 9 58
15 2.7975285 12 8 38 13 10
13 3.8456363 1 3 6 8 27

示例

df[order(-df[,2],-df[,3]),]

输出

x1 x2 x3 x4 x5 x6
15 2.7975285 12 8 38 13 10
4 -0.3023457 8 10 33 14 65
20 2.3641867 7 10 36 6 15
10 1.5060378 7 9 31 13 67
8 0.9898116 7 4 44 10 47
1 2.2352207 6 7 18 14 4
11 1.8263259 6 6 12 12 48
3 1.6883762 6 1 19 12 74
9 1.0515244 6 1 11 9 88
5 1.8291240 5 10 25 8 9
16 0.4333346 5 10 50 11 99
18 1.6408605 5 9 40 6 32
12 1.5934012 5 8 41 13 44
17 1.9141490 5 1 9 6 40
14 2.3940541 4 10 39 9 58
6 2.1402782 4 7 27 10 55
2 1.6692641 4 5 32 11 35
7 0.5025733 4 4 28 7 83
19 0.8063910 2 10 35 8 5
13 3.8456363 1 3 6 8 27

示例

df[order(-df[,2],df[,5]),]

输出

x1 x2 x3 x4 x5 x6
15 2.7975285 12 8 38 13 10
4 -0.3023457 8 10 33 14 65
20 2.3641867 7 10 36 6 15
8 0.9898116 7 4 44 10 47
10 1.5060378 7 9 31 13 67
9 1.0515244 6 1 11 9 88
3 1.6883762 6 1 19 12 74
11 1.8263259 6 6 12 12 48
1 2.2352207 6 7 18 14 4
17 1.9141490 5 1 9 6 40
18 1.6408605 5 9 40 6 32
5 1.8291240 5 10 25 8 9
16 0.4333346 5 10 50 11 99
12 1.5934012 5 8 41 13 44
7 0.5025733 4 4 28 7 83
14 2.3940541 4 10 39 9 58
6 2.1402782 4 7 27 10 55
2 1.6692641 4 5 32 11 35
19 0.8063910 2 10 35 8 5
13 3.8456363 1 3 6 8 27

更新于: 2020年8月24日

193 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告