如何重新排序 R 数据框中的行索引?

如果我们有一个数据帧,其中行索引的顺序不正确,那么我们可以将它们设置为 NULL 以获得从 1 开始的正确行号序列。

例如,如果我们有一个名为 df 的数据框,它的行以不适当的方式排序,那么我们可以使用下面给出的命令以正确的顺序对行索引重新排序 -

row.names(df)<- NULL

示例 1

以下代码段创建了一个示例数据框 -

x<-rnorm(20)
y<-rnorm(20)
df1<-data.frame(x,y)
df1

创建以下数据框 -

       x           y
1   0.79220702   0.74396588
2  -0.27362051  -0.09125937
3  -1.34248184  -1.42285864
4  -1.10430033   0.26453631
5  -0.52047324  -0.54336532
6  -1.20612600   0.30704459
7   1.62577878   0.58061047
8  -0.09384629  -0.16973222
9   2.83732637  -0.58291919
10 -0.12450580  -0.76230292
11  1.50889524   1.13920262
12  0.19941471   0.81462851
13 0.21843905   -0.49421398
14 -1.97555113  -0.78007517
15 -1.02591803  -0.21299362
16 1.43648115    0.71561607
17 -0.15479259   0.16713844
18  0.06903559  -2.15635528
19  1.51844896   0.49315357
20  0.25861358  -1.43660348

要更改 df1 中行索引的顺序,请将以下代码添加到上述代码段中 -

x<-rnorm(20)
y<-rnorm(20)
df1<-data.frame(x,y)
df1<-df1[sample(1:nrow(df1)),]
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

       x            y
16  1.43648115   0.71561607
6  -1.20612600   0.30704459
3  -1.34248184  -1.42285864
20  0.25861358  -1.43660348
9   2.83732637  -0.58291919
1   0.79220702   0.74396588
8  -0.09384629  -0.16973222
19  1.51844896   0.49315357
2  -0.27362051  -0.09125937
4  -1.10430033   0.26453631
12  0.19941471   0.81462851
13  0.21843905  -0.49421398
18  0.06903559  -2.15635528
10 -0.12450580  -0.76230292
14 -1.97555113  -0.78007517
5  -0.52047324  -0.54336532
11  1.50889524   1.13920262
17 -0.15479259   0.16713844
7   1.62577878   0.58061047
15 -1.02591803  -0.21299362

要对 df1 中的行索引重新排序,请将以下代码添加到上述代码段中 -

x<-rnorm(20)
y<-rnorm(20)
df1<-data.frame(x,y)
df1<-df1[sample(1:nrow(df1)),]
row.names(df1)<-NULL
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

        x          y
1   1.43648115   0.71561607
2  -1.20612600   0.30704459
3  -1.34248184  -1.42285864
4   0.25861358  -1.43660348
5   2.83732637  -0.58291919
6   0.79220702   0.74396588
7  -0.09384629  -0.16973222
8   1.51844896   0.49315357
9  -0.27362051  -0.09125937
10 -1.10430033   0.26453631
11  0.19941471   0.81462851
12  0.21843905  -0.49421398
13  0.06903559  -2.15635528
14 -0.12450580  -0.76230292
15 -1.97555113  -0.78007517
16 -0.52047324  -0.54336532
17  1.50889524   1.13920262
18 -0.15479259   0.16713844
19  1.62577878   0.58061047
20 -1.02591803  -0.21299362

示例 2

以下代码段创建了一个示例数据框 -

a<-rpois(20,2)
b<-rpois(20,5)
c<-rpois(20,2)
df2<-data.frame(a,b,c)
df2

创建以下数据框 -

   a  b  c
1  2  1  2
2  0 10  0
3  1  2  1
4  2  5  0
5  4  4  2
6  2  4  5
7  3  5  2
8  4  2  3
9  4  6  2
10 1  3  3
11 1  9  1
12 2  4  3
13 4  6  1
14 2  4  1
15 4  7  3
16 1  2  0
17 0  5  1
18 2  4  1
19 0  8  5
20 3  6  3

要更改 df2 中行索引的顺序,请将以下代码添加到上述代码段中 -

a<-rpois(20,2)
b<-rpois(20,5)
c<-rpois(20,2)
df2<-data.frame(a,b,c)
df2<-df2[sample(1:nrow(df2)),]
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

   a  b  c
6  2  4  5
7  3  5  2
9  4  6  2
15 4  7  3
2  0 10  0
19 0  8  5
10 1  3  3
20 3  6  3
16 1  2  0
3  1  2  1
18 2  4  1
5  4  4  2
12 2  4  3
17 0  5  1
4  2  5  0
8  4  2  3
11 1  9  1
13 4  6  1
1  2  1  2
14 2  4  1

要重新排序 df2 中的行索引,请将以下代码添加到上面的代码段中 -

a<-rpois(20,2)
b<-rpois(20,5)
c<-rpois(20,2)
df2<-data.frame(a,b,c)
df2<-df2[sample(1:nrow(df2)),]
row.names(df2)<-NULL
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

   a  b  c
1  2  4  5
2  3  5  2
3  4  6  2
4  4  7  3
5  0 10  0
6  0  8  5
7  1  3  3
8  3  6  3
9  1  2  0
10 1  2  1
11 2  4  1
12 4  4  2
13 2  4  3
14 0  5  1
15 2  5  0
16 4  2  3
17 1  9  1
18 4  6  1
19 2  1  2
20 2  4  1