如果 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