如何使用 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 日

超過千次的瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.