如何在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+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告