R 自學指引 資料處理命令簡介與操作
資料的排序
在 R 中有幾個與排序有關的命令如 rev()、sort()、rank() 與 order(),相關說明如下(表7)。
命令 | 說明 |
---|---|
rev(x) | 將向量 x 元素反轉。 |
sort(x,decreasing=T) | 將向量 x 每一個元素從小排到大或從大排到小。 |
rank(x) | 各元素的排序等級將向量 x 每一個元素從小到大排序之後 x 元素之相對順序。 |
order(x) | 先將元素由小到大排好,再傳回其在原向量的數字指標 (原向量 x 的原始位置)。 |
表 7: 與排序有關的命令。
以下為這 5 個命令的操作範例,基本上 rev()、sort() 是比較好理解的,而 rank() 是由 sort() 來的,先以 sort() 將每個元素從小到大排序之後,再找出 x 元素所對應的名次,最後是原向量 x 的數字指標,即原始位置,也就是 order() 傳回的結果(圖9)。
> x<-c(4,5,8,2,9,7,1) (ENTER)
> x
[1] 4 5 8 2 9 7 1
> rev(x) (ENTER)
[1] 1 7 9 2 8 5 4
> sort(x) (ENTER)
[1] 1 2 4 5 7 8 9
> sort(x,decreasing=T) (ENTER)
[1] 9 8 7 5 4 2 1
> rank(x) (ENTER)
[1] 3 4 6 2 7 5 1
> order(x) (ENTER)
[1] 7 4 1 2 6 3 5
>

利用資料框架變數,可作資料排序,先從 0 到 100 任選 40 個可重覆 (replace=T) 的數字。
> x<-sample(0:100,size=40,replace=T) (ENTER)
然後建立 8X5 的矩陣變數 y。
> y<-matrix(x,8,5) (ENTER)
> y (ENTER)
[,1] [,2] [,3] [,4] [,5]
[1,] 73 81 47 98 67
[2,] 70 82 39 62 69
[3,] 15 95 48 19 88
[4,] 85 46 6 16 19
[5,] 19 58 84 15 57
[6,] 81 80 93 63 58
[7,] 95 32 78 54 91
[8,] 34 69 38 96 43
設定變數名稱。
> colnames(y)<-LETTERS[1:5] (ENTER)
> y (ENTER)
A B C D E
[1,] 73 81 47 98 67
[2,] 70 82 39 62 69
[3,] 15 95 48 19 88
[4,] 85 46 6 16 19
[5,] 19 58 84 15 57
[6,] 81 80 93 63 58
[7,] 95 32 78 54 91
[8,] 34 69 38 96 43
將矩陣變數 y 轉變資料框架變數 score。
> score<-as.data.frame(y) (ENTER)
我們可將資料框架 score 排序。
> attach(score) (ENTER)
例如按 A 排序時,可用以下命令。
> scoreA <- score[order(A),] (ENTER)
按 A、B 排序時,可用以下命令。
> scoreAB <- score[order(A, B),] (ENTER)
按 A 由小至大、B 由大至小排序,可用以下命令。
> scoreA_B <- score[order(A, -B),] (ENTER)
> detach(score) (ENTER)
> score
A B C D E
1 73 81 47 98 67
2 70 82 39 62 69
3 15 95 48 19 88
4 85 46 6 16 19
5 19 58 84 15 57
6 81 80 93 63 58
7 95 32 78 54 91
8 34 69 38 96 43
> scoreA (ENTER)
A B C D E
3 15 95 48 19 88
5 19 58 84 15 57
8 34 69 38 96 43
2 70 82 39 62 69
1 73 81 47 98 67
6 81 80 93 63 58
4 85 46 6 16 19
7 95 32 78 54 91
> scoreAB (ENTER)
A B C D E
3 15 95 48 19 88
5 19 58 84 15 57
8 34 69 38 96 43
2 70 82 39 62 69
1 73 81 47 98 67
6 81 80 93 63 58
4 85 46 6 16 19
7 95 32 78 54 91
> scoreA_B (ENTER)
A B C D E
3 15 95 48 19 88
5 19 58 84 15 57
8 34 69 38 96 43
2 70 82 39 62 69
1 73 81 47 98 67
6 81 80 93 63 58
4 85 46 6 16 19
7 95 32 78 54 91