我目前有以下data frame內容,并正在嘗試開發一個包含 5 個唯一的串列,data frames其中包含原始的每 5 行df。有沒有辦法每隔 5 行選擇一次并將其添加到串列中的新資料框中?使用 afor loop或lapply?
df
X1 X2 X3 X4 X5
1 0 0 1.501990 0
2 0 0 1.883904 0
3 0 0 1.333195 0
4 0 0 0.000000 0
5 0 0 2.136760 0
6 0 0 2.186790 0
7 0 0 1.269592 0
8 0 0 1.458405 0
9 0 0 1.816493 0
10 0 0 0.000000 0
11 0 0 2.190029 0
12 0 0 0.000000 0
13 0 0 1.460534 0
14 0 0 1.470776 0
15 0 0 1.675406 0
16 0 0 1.842470 0
17 0 0 1.937999 0
18 0 0 0.000000 0
19 0 0 1.649926 0
20 0 0 2.067902 0
例如,第一個data frame將由第 1、6、11 和 16 行組成,而下一個將從第 2 行開始并繼續df?
uj5u.com熱心網友回復:
使用splitwith1:5創建間隔為 5 行的資料幀。
split(df, 1:5)
輸出
$`1`
X1 X2 X3 X4 X5
1 1 0 0 1.501990 0
6 6 0 0 2.186790 0
11 11 0 0 2.190029 0
16 16 0 0 1.842470 0
$`2`
X1 X2 X3 X4 X5
2 2 0 0 1.883904 0
7 7 0 0 1.269592 0
12 12 0 0 0.000000 0
17 17 0 0 1.937999 0
$`3`
X1 X2 X3 X4 X5
3 3 0 0 1.333195 0
8 8 0 0 1.458405 0
13 13 0 0 1.460534 0
18 18 0 0 0.000000 0
$`4`
X1 X2 X3 X4 X5
4 4 0 0 0.000000 0
9 9 0 0 1.816493 0
14 14 0 0 1.470776 0
19 19 0 0 1.649926 0
$`5`
X1 X2 X3 X4 X5
5 5 0 0 2.136760 0
10 10 0 0 0.000000 0
15 15 0 0 1.675406 0
20 20 0 0 2.067902 0
另一種方法dplyr::group_split是:
group_split(df, rep(1:5, nrow(df)/5), .keep = F)
資料
df <- structure(list(X1 = 1:20, X2 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), X3 = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), X4 = c(1.50199, 1.883904, 1.333195, 0, 2.13676,
2.18679, 1.269592, 1.458405, 1.816493, 0, 2.190029, 0, 1.460534,
1.470776, 1.675406, 1.84247, 1.937999, 0, 1.649926, 2.067902),
X5 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-20L))
uj5u.com熱心網友回復:
一個可能的解決方案,基于dplyr::group_split:
library(dplyr)
df %>%
mutate(id = 0:(nrow(df)-1) %% 4) %>%
group_by(id) %>%
group_split(.keep = F) %>%
as.list
#> [[1]]
#> # A tibble: 5 × 5
#> X1 X2 X3 X4 X5
#> <int> <int> <int> <dbl> <int>
#> 1 1 0 0 1.50 0
#> 2 5 0 0 2.14 0
#> 3 9 0 0 1.82 0
#> 4 13 0 0 1.46 0
#> 5 17 0 0 1.94 0
#>
#> [[2]]
#> # A tibble: 5 × 5
#> X1 X2 X3 X4 X5
#> <int> <int> <int> <dbl> <int>
#> 1 2 0 0 1.88 0
#> 2 6 0 0 2.19 0
#> 3 10 0 0 0 0
#> 4 14 0 0 1.47 0
#> 5 18 0 0 0 0
#>
#> [[3]]
#> # A tibble: 5 × 5
#> X1 X2 X3 X4 X5
#> <int> <int> <int> <dbl> <int>
#> 1 3 0 0 1.33 0
#> 2 7 0 0 1.27 0
#> 3 11 0 0 2.19 0
#> 4 15 0 0 1.68 0
#> 5 19 0 0 1.65 0
#>
#> [[4]]
#> # A tibble: 5 × 5
#> X1 X2 X3 X4 X5
#> <int> <int> <int> <dbl> <int>
#> 1 4 0 0 0 0
#> 2 8 0 0 1.46 0
#> 3 12 0 0 0 0
#> 4 16 0 0 1.84 0
#> 5 20 0 0 2.07 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/443153.html
