Skip to contents

Use chunk_by_id to split up a data set by the ID column; use chunk_by_row split a data set by rows.

Usage

chunk_by_id(data, nchunk, id_col = "ID", mark = NULL)

chunk_by_cols(data, nchunk, cols, mark = NULL)

chunk_by_row(data, nchunk, mark = NULL)

Arguments

data

A data frame.

nchunk

The number of chunks.

id_col

Character name specifying the column containing the ID for chunking.

mark

When populated as a character label, adds a column to the chunked data frames with that name and with value the integer group number.

cols

A character vector of columns to use for deriving ID to use for chunking.

Value

A list of data frames.

Examples

x <- expand.grid(ID = 1:10, B = rev(1:10))

chunk_by_id(x, nchunk = 3)
#> $`1`
#>    ID  B
#> 1   1 10
#> 2   2 10
#> 3   3 10
#> 4   4 10
#> 11  1  9
#> 12  2  9
#> 13  3  9
#> 14  4  9
#> 21  1  8
#> 22  2  8
#> 23  3  8
#> 24  4  8
#> 31  1  7
#> 32  2  7
#> 33  3  7
#> 34  4  7
#> 41  1  6
#> 42  2  6
#> 43  3  6
#> 44  4  6
#> 51  1  5
#> 52  2  5
#> 53  3  5
#> 54  4  5
#> 61  1  4
#> 62  2  4
#> 63  3  4
#> 64  4  4
#> 71  1  3
#> 72  2  3
#> 73  3  3
#> 74  4  3
#> 81  1  2
#> 82  2  2
#> 83  3  2
#> 84  4  2
#> 91  1  1
#> 92  2  1
#> 93  3  1
#> 94  4  1
#> 
#> $`2`
#>    ID  B
#> 5   5 10
#> 6   6 10
#> 7   7 10
#> 15  5  9
#> 16  6  9
#> 17  7  9
#> 25  5  8
#> 26  6  8
#> 27  7  8
#> 35  5  7
#> 36  6  7
#> 37  7  7
#> 45  5  6
#> 46  6  6
#> 47  7  6
#> 55  5  5
#> 56  6  5
#> 57  7  5
#> 65  5  4
#> 66  6  4
#> 67  7  4
#> 75  5  3
#> 76  6  3
#> 77  7  3
#> 85  5  2
#> 86  6  2
#> 87  7  2
#> 95  5  1
#> 96  6  1
#> 97  7  1
#> 
#> $`3`
#>     ID  B
#> 8    8 10
#> 9    9 10
#> 10  10 10
#> 18   8  9
#> 19   9  9
#> 20  10  9
#> 28   8  8
#> 29   9  8
#> 30  10  8
#> 38   8  7
#> 39   9  7
#> 40  10  7
#> 48   8  6
#> 49   9  6
#> 50  10  6
#> 58   8  5
#> 59   9  5
#> 60  10  5
#> 68   8  4
#> 69   9  4
#> 70  10  4
#> 78   8  3
#> 79   9  3
#> 80  10  3
#> 88   8  2
#> 89   9  2
#> 90  10  2
#> 98   8  1
#> 99   9  1
#> 100 10  1
#> 

chunk_by_row(x, nchunk = 4)
#> $`1`
#>    ID  B
#> 1   1 10
#> 2   2 10
#> 3   3 10
#> 4   4 10
#> 5   5 10
#> 6   6 10
#> 7   7 10
#> 8   8 10
#> 9   9 10
#> 10 10 10
#> 11  1  9
#> 12  2  9
#> 13  3  9
#> 14  4  9
#> 15  5  9
#> 16  6  9
#> 17  7  9
#> 18  8  9
#> 19  9  9
#> 20 10  9
#> 21  1  8
#> 22  2  8
#> 23  3  8
#> 24  4  8
#> 25  5  8
#> 
#> $`2`
#>    ID B
#> 26  6 8
#> 27  7 8
#> 28  8 8
#> 29  9 8
#> 30 10 8
#> 31  1 7
#> 32  2 7
#> 33  3 7
#> 34  4 7
#> 35  5 7
#> 36  6 7
#> 37  7 7
#> 38  8 7
#> 39  9 7
#> 40 10 7
#> 41  1 6
#> 42  2 6
#> 43  3 6
#> 44  4 6
#> 45  5 6
#> 46  6 6
#> 47  7 6
#> 48  8 6
#> 49  9 6
#> 50 10 6
#> 
#> $`3`
#>    ID B
#> 51  1 5
#> 52  2 5
#> 53  3 5
#> 54  4 5
#> 55  5 5
#> 56  6 5
#> 57  7 5
#> 58  8 5
#> 59  9 5
#> 60 10 5
#> 61  1 4
#> 62  2 4
#> 63  3 4
#> 64  4 4
#> 65  5 4
#> 66  6 4
#> 67  7 4
#> 68  8 4
#> 69  9 4
#> 70 10 4
#> 71  1 3
#> 72  2 3
#> 73  3 3
#> 74  4 3
#> 75  5 3
#> 
#> $`4`
#>     ID B
#> 76   6 3
#> 77   7 3
#> 78   8 3
#> 79   9 3
#> 80  10 3
#> 81   1 2
#> 82   2 2
#> 83   3 2
#> 84   4 2
#> 85   5 2
#> 86   6 2
#> 87   7 2
#> 88   8 2
#> 89   9 2
#> 90  10 2
#> 91   1 1
#> 92   2 1
#> 93   3 1
#> 94   4 1
#> 95   5 1
#> 96   6 1
#> 97   7 1
#> 98   8 1
#> 99   9 1
#> 100 10 1
#>