如果 R 中的行无序,如何重新编号?

r programmingserver side programmingprogramming更新于 2025/6/25 20:22:17

当我们使用内置或导入的数据集创建样本时,所选行的编号与原始数据集中的编号相同,因此编号变为无序。要将此无序编号更改为序列,例如从 1 开始到样本中的总行数,我们可以使用 1:nrow(“sample_object_name”)。

考虑以下数据框 −

示例

set.seed(999)
x<-rnorm(20,5,1)
y<-rnorm(20,2,0.80)
z<-rnorm(20,3,0.95)
df1<-data.frame(x,y,z)
df1

输出

      x       y          z
1 4.718260 1.0171494 2.538645
2 3.687440 2.5144355 3.008073
3 5.795184 1.7121897 1.781992
4 5.270070 2.2352285 1.944000
5 4.722694 1.0997852 3.285632
6 4.433976 2.5138125 3.262655
7 3.121342 1.1146099 1.051666
8 3.733209 1.2921277 3.013481
9 4.032250 0.7567239 3.553153
10 3.878991 1.8986568 2.967010
11 6.325464 3.9061313 2.889169
12 5.133977 2.4810209 2.387267
13 5.938749 2.1434890 4.657191
14 5.172538 2.8644252 3.347790
15 5.957650 1.8025503 2.936531
16 3.637314 0.3090104 3.268482
17 5.068335 1.7035780 3.539310
18 5.100658 2.4182942 1.784745
19 5.901345 2.4142444 3.413600
20 2.925643 0.8779913 2.462774

对数据框 df1 进行采样−

示例

Sample1<-df1[sample(nrow(df1),10),] Sample1

输出

     x y z
 14 5.172538 2.8644252 3.347790
16 3.637314 0.3090104 3.268482
12 5.133977 2.4810209 2.387267
10 3.878991 1.8986568 2.967010
11 6.325464 3.9061313 2.889169
20 2.925643 0.8779913 2.462774
15 5.957650 1.8025503 2.936531
19 5.901345 2.4142444 3.413600
13 5.938749 2.1434890 4.657191
17 5.068335 1.7035780 3.539310

设置从 1 开始的行号,直到 Sample1 中的总行数 −

示例

row.names(Sample1)<-1:nrow(Sample1) Sample1

输出

    x          y       z
1  5.172538 2.8644252 3.347790
2  3.637314 0.3090104 3.268482
3  5.133977 2.4810209 2.387267
4  3.878991 1.8986568 2.967010
5  6.325464 3.9061313 2.889169
6  2.925643 0.8779913 2.462774
7  5.957650 1.8025503 2.936531
8  5.901345 2.4142444 3.413600
9  5.938749 2.1434890 4.657191
10 5.068335 1.7035780 3.539310

我们来看另一个例子 −

示例

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

输出

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

对 df2 进行采样 −

示例

Sample2<-df2[sample(nrow(df2),12),] 
Sample2

输出

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

设置 Sample2 中从 1 开始的行号到总行数 −

示例

row.names(Sample2)<-1:nrow(Sample2)
Sample2

输出

  a b c
1  2 1 10
2  6 1 11
3  7 0  7
4 12 2  6
5  7 0  6
6  5 1  4
7  1 1 11
8  3 2  6
9  4 3  7
10 5 3 10
11 6 3  3
12 4 2  6

相关文章