如何在R語言中將資料框的行按字母順序排序?


如果我們在R語言資料框的列中儲存字串資料,我們可能希望按字母順序對資料框的行進行排序。這可以使用`apply`、`sort`和`t`(轉置)函式來完成。

例如,如果我們有一個包含字串資料的名為`df`的資料框,則可以使用以下命令按字母順序對`df`進行排序:

t(apply(df,1,sort))

示例 1

以下程式碼片段建立了一個示例資料框:

x1<-sample(LETTERS[1:26],20)
x2<-sample(LETTERS[1:26],20)
x3<-sample(LETTERS[1:26],20)
df1<-data.frame(x1,x2,x3)
df1

輸出

建立了以下資料框:

   x1 x2 x3
1  Z  L  Y
2  Q  W  J
3  P  S  Z
4  U  E  C
5  M  C  K
6  H  G  M
7  L  A  I
8  F  Q  T
9  R  T  G
10 X  N  P
11 T  I  L
12 N  J  E
13 E  X  R
14 Y  U  N
15 W  D  W
16 S  M  F
17 B  O  V
18 A  B  U
19 I  Z  D
20 O  F  A

要按字母順序對`df1`的行進行排序,請將以下程式碼新增到上面的程式碼片段中:

x1<-sample(LETTERS[1:26],20)
x2<-sample(LETTERS[1:26],20)
x3<-sample(LETTERS[1:26],20)
df1<-data.frame(x1,x2,x3)
t(apply(df1,1,sort))

輸出

如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:

      [,1] [,2] [,3]
[1,]  "L"  "Y"  "Z"
[2,]  "J"  "Q"  "W"
[3,]  "P"  "S"  "Z"
[4,]  "C"  "E"  "U"
[5,]  "C"  "K"  "M"
[6,]  "G"  "H"  "M"
[7,]  "A"  "I"  "L"
[8,]  "F"  "Q"  "T"
[9,]  "G"  "R"  "T"
[10,] "N"  "P"  "X"
[11,] "I"  "L"  "T"
[12,] "E"  "J"  "N"
[13,] "E"  "R"  "X"
[14,] "N"  "U"  "Y"
[15,] "D"  "W"  "W"
[16,] "F"  "M"  "S"
[17,] "B"  "O"  "V"
[18,] "A"  "B"  "U"
[19,] "D"  "I"  "Z"
[20,] "A"  "F"  "O"

示例 2

以下程式碼片段建立了一個示例資料框:

y1<-sample(c("India","Russia","China"),20,replace=TRUE)
y2<-sample(c("UK","USA","Egpyt"),20,replace=TRUE)
y3<-sample(c("Sudan","Nepal","Croatia"),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

輸出

建立了以下資料框:

     y1    y2    y3
1  India  UK    Nepal
2  India  Egpyt Sudan
3  China  USA   Nepal
4  China  USA   Sudan
5  Russia UK    Nepal
6  India  Egpyt Sudan
7  India  UK    Croatia
8  China  USA   Nepal
9  India  Egpyt Nepal
10 Russia UK    Croatia
11 Russia UK    Nepal
12 India  UK    Croatia
13 Russia USA   Nepal
14 Russia Egpyt Nepal
15 India  Egpyt Croatia
16 India  Egpyt Nepal
17 China  UK    Nepal
18 India  UK    Sudan
19 India  Egpyt Croatia
20 Russia USA    Nepal

要按字母順序對`df2`的行進行排序,請將以下程式碼新增到上面的程式碼片段中:

y1<-sample(c("India","Russia","China"),20,replace=TRUE)
y2<-sample(c("UK","USA","Egpyt"),20,replace=TRUE)
y3<-sample(c("Sudan","Nepal","Croatia"),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
t(apply(df2,1,sort))

輸出

如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:

        [,1]     [,2]     [,3]
[1,]  "India"  "Nepal"   "UK"
[2,]  "Egpyt"  "India"   "Sudan"
[3,]  "China"  "Nepal"   "USA"
[4,]  "China"  "Sudan"   "USA"
[5,]  "Nepal"  "Russia"  "UK"
[6,]  "Egpyt"  "India"   "Sudan"
[7,]  "Croatia" "India"  "UK"
[8,]  "China"  "Nepal"   "USA"
[9,]  "Egpyt"  "India"   "Nepal"
[10,] "Croatia" "Russia" "UK"
[11,] "Nepal"  "Russia"   "UK"
[12,] "Croatia" "India"  "UK"
[13,] "Nepal"  "Russia"  "USA"
[14,] "Egpyt"  "Nepal"   "Russia"
[15,] "Croatia" "Egpyt"  "India"
[16,] "Egpyt"  "India"   "Nepal"
[17,] "China"  "Nepal"   "UK"
[18,] "India"  "Sudan"   "UK"
[19,] "Croatia" "Egpyt"  "India"
[20,] "Nepal"  "Russia"  "USA"

更新於:2021年11月6日

2K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

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