如何使用 R 中的行号分割数据框?


要使用行号分割数据框,我们可以使用 split 函数和 cumsum 函数。split 函数将分割行,cumsum 函数将选择行。例如,如果我们有一个名为 df 的数据框,其中包含 20 行,那么我们可以使用以下命令在第 11 行将该数据框分割为两个数据框:

split(df,cumsum(1:nrow(df)%in%11)).

示例

考虑以下数据框:

 实况演示

x1<-rnorm(20,5,0.25)
x2<-rnorm(20,5,3)
x3<-rnorm(20,8,1.2)
df1<-data.frame(x1,x2,x3)
df1

输出

     x1        x2          x3
1  5.069657  10.5138048   7.468048
2  4.708780   7.4362353   5.603685
3  5.287432   5.8433927   9.552244
4  4.743582   4.4651944   9.254093
5  4.907882   4.1349492   7.590686
6  4.683656   3.7456085   7.953069
7  5.406593   1.8960190   8.760140
8  5.031933   1.4142813   8.056313
9  4.853688   3.8618121   8.469838
10 4.723343   7.4021671   7.599045
11 4.828985   5.9027257   9.756767
12 5.572417   6.6741910   6.889187
13 5.240174   8.0006150   7.333833
14 5.350764   8.1929127   7.256837
15 5.129569   7.1392279   7.453760
16 4.812799  -0.2614572   6.651369
17 4.723211  -0.2700228   5.817261
18 4.572514   1.9253317   8.074193
19 5.036176   7.5274004   8.506301
20 5.143416   1.8962568   5.950367

在第 10 行将数据框 df1 分割为两个数据框:

示例

split(df1,cumsum(1:nrow(df1)%in%10))
$`0`

输出

      x1        x2          x3
1  5.069657  10.513805   7.468048
2  4.708780   7.436235   5.603685
3  5.287432   5.843393   9.552244
4  4.743582   4.465194   9.254093
5  4.907882   4.134949   7.590686
6  4.683656   3.745608   7.953069
7  5.406593   1.896019   8.760140
8  5.031933   1.414281   8.056313
9  4.853688   3.861812   8.469838
$`1`
       x1        x2         x3
10  4.723343   7.4021671  7.599045
11  4.828985   5.9027257  9.756767
12  5.572417   6.6741910  6.889187
13  5.240174   8.0006150  7.333833
14  5.350764   8.1929127  7.256837
15  5.129569   7.1392279  7.453760
16  4.812799  -0.2614572  6.651369
17  4.723211  -0.2700228  5.817261
18  4.572514   1.9253317  8.074193
19  5.036176   7.5274004  8.506301
20  5.143416   1.8962568  5.950367

示例

 实况演示

y1<-rpois(20,5)
y2<-rpois(20,5)
y3<-rpois(20,2)
df2<-data.frame(y1,y2,y3)
df2

输出

   y1 y2 y3
1  2  5  3
2  5  5  2
3  6  6  2
4  6  6  2
5  6  4  3
6  1  5  1
7  4  4  3
8  6  4  4
9  7  5  1
10 3  6  1
11 4  4  3
12 8  7  1
13 6  3  1
14 10 2  1
15 1  3  2
16 7  4  3
17 4  2  2
18 4  2  3
19 6  6  3
20 7  3  1

在第 6 行将数据框 df1 分割为两个数据框:

示例

split(df2,cumsum(1:nrow(df2)%in%6))

输出

$`0`
   y1 y2 y3
1  2  5  3
2  5  5  2
3  6  6  2
4  6  6  2
5  6  4  3
 $`1`
   y1 y2 y3
6  1  5  1
7  4  4  3
8  6  4  4
9  7  5  1
10 3  6  1
11 4  4  3
12 8  7  1
13 6  3  1
14 10 2  1
15 1  3  2
16 7  4  3
17 4  2  2
18 4  2  3
19 6  6  3
20 7  3  1

更新于: 2021 年 3 月 16 日

超过千次的浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告