如何在R語言中使用儲存在向量中的列名,將data.table物件的某列資料按升序排序?


使用列號可以輕鬆地對data.table物件的列進行排序,但使用列名進行排序則有所不同。如果列名儲存在一個向量中,並且我們想要使用此名稱按升序對data.table物件的列進行排序,則將使用order函式以及單方括號和雙方括號,如下例所示。

載入data.table包並建立一個data.table物件:

示例

library(data.table)
x1<-rpois(20,1)
x2<-rpois(20,5)
DT1<-data.table(x1,x2)
DT1

輸出

    x1 x2
1:  1  3
2:  1  6
3:  2  3
4:  0  7
5:  1  8
6:  0  5
7:  1  3
8:  0  4
9:  1  2
10: 0  6
11: 0  5
12: 0  4
13: 2  6
14: 0  6
15: 2  0
16: 0  2
17: 1  6
18: 0  6
19: 2  7
20: 2  2

Column_for_sorting<-"x2"

使用Column_for_sorting對DT1進行排序:

示例

DT1[order(DT1[[Column_for_sorting]])]

輸出

   x1  x2
1:  2  0
2:  1  2
3:  0  2
4:  2  2
5:  1  3
6:  2  3
7:  1  3
8:  0  4
9:  0  4
10: 0  5
11: 0  5
12: 1  6
13: 0  6
14: 2  6
15: 0  6
16: 1  6
17: 0  6
18: 0  7
19: 2  7
20: 1  8

示例

y1<-rnorm(20)
y2<-rnorm(20)
DT2<-data.table(y1,y2)
DT2

輸出

        y1           y2
1:   0.3499126    1.6988660
2:  -0.6970935   -1.2961417
3:   0.1244235    1.1192189
4:  -1.0639993    0.2504188
5:  -0.5714189    0.9772097
6:   1.3096543    1.5397439
7:   0.1163726   -2.8518334
8:  -1.2941302    0.6353213
9:  -0.4853220   -0.2274419
10: -0.3999413   -0.4259027
11:  2.9027999    0.2589249
12:  1.6724920   -1.2572220
13:  0.8792422   -0.5715381
14:  1.3257716    1.4083895
15: -0.9301681    0.1565980
16: -1.3777834    0.3630332
17:  0.1585897   -1.7692727
18: -2.7972968   -0.3854796
19: -1.4035229   -0.9016175
20:  1.4411729    0.1969444

Column_for_sorting<-"y1"

使用Column_for_sorting對DT2進行排序:

示例

DT2[order(DT2[[Column_for_sorting]])]

輸出

        y1          y2
1:  -2.7972968   -0.3854796
2:  -1.4035229   -0.9016175
3:  -1.3777834    0.3630332
4:  -1.2941302    0.6353213
5:  -1.0639993    0.2504188
6:  -0.9301681    0.1565980
7:  -0.6970935   -1.2961417
8:  -0.5714189    0.9772097
9:  -0.4853220   -0.2274419
10: -0.3999413   -0.4259027
11:  0.1163726   -2.8518334
12:  0.1244235    1.1192189
13:  0.1585897   -1.7692727
14:  0.3499126    1.6988660
15:  0.8792422   -0.5715381
16:  1.3096543    1.5397439
17:  1.3257716    1.4083895
18:  1.4411729    0.1969444
19:  1.6724920   -1.2572220
20:  2.9027999    0.2589249

更新於:2021年2月10日

244 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.