R函数根据索引将数据帧拆分为多个数据帧

R function to split a dataframe into multiple dataframe based on their index

假设我有一个包含 100 行数据的数据框。我想将数据框拆分为多个数据框,每个数据框包含 10 行。例如,第一个分离的数据帧的索引从 1 到 10,第二个数据帧的索引从 2 到 11,第三个数据帧的索引从 3 到 12,依此类推。我将使用此数据框进行进一步分析。

我试过使用 split() 函数,但我只能想出一种方法来平均分割数据帧。我以为使用循环会简化它,但我一直无法使其工作。

iterator <- seq(1,100,10)
for (i in iterator){
  df[[i+1]] <- df[1:100,]
}

我试过类似的方法,但没有显示我想要的输出。

我们可以用slide

library(slider)
library(dplyr)
library(purrr)
slide(seq_len(nrow(df)), .f = ~ .x, .after = 9) %>%
    keep(~ length(.x) == 10) %>%
    map(~  df %>% 
          slice(.x))

-测试

> slide(1:15, .f = ~ .x, .after = 9) %>%
    keep(~length(.x) == 10)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  2  3  4  5  6  7  8  9 10 11

[[3]]
 [1]  3  4  5  6  7  8  9 10 11 12

[[4]]
 [1]  4  5  6  7  8  9 10 11 12 13

[[5]]
 [1]  5  6  7  8  9 10 11 12 13 14

[[6]]
 [1]  6  7  8  9 10 11 12 13 14 15

mtcars 数据集

slide(1:15, .f = ~ .x, .after = 9) %>%
   keep(~ length(.x) == 10) %>%
   map(~ mtcars %>% slice(.x))
[[1]]
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

[[2]]
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4

[[3]]
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3

[[4]]
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL        17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3

[[5]]
                   mpg cyl  disp  hp drat   wt  qsec vs am gear carb
Hornet Sportabout 18.7   8 360.0 175 3.15 3.44 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.46 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.57 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.19 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.15 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.44 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.44 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.07 17.40  0  0    3    3
Merc 450SL        17.3   8 275.8 180 3.07 3.73 17.60  0  0    3    3
Merc 450SLC       15.2   8 275.8 180 3.07 3.78 18.00  0  0    3    3

[[6]]
                    mpg cyl  disp  hp drat   wt  qsec vs am gear carb
Valiant            18.1   6 225.0 105 2.76 3.46 20.22  1  0    3    1
Duster 360         14.3   8 360.0 245 3.21 3.57 15.84  0  0    3    4
Merc 240D          24.4   4 146.7  62 3.69 3.19 20.00  1  0    4    2
Merc 230           22.8   4 140.8  95 3.92 3.15 22.90  1  0    4    2
Merc 280           19.2   6 167.6 123 3.92 3.44 18.30  1  0    4    4
Merc 280C          17.8   6 167.6 123 3.92 3.44 18.90  1  0    4    4
Merc 450SE         16.4   8 275.8 180 3.07 4.07 17.40  0  0    3    3
Merc 450SL         17.3   8 275.8 180 3.07 3.73 17.60  0  0    3    3
Merc 450SLC        15.2   8 275.8 180 3.07 3.78 18.00  0  0    3    3
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.25 17.98  0  0    3    4

或使用 base Rembed

lapply(asplit(embed(seq_len(nrow(df)), 10)[, 10:1], 1)
    function(x) df[x,])