user5359531
user5359531

Reputation: 3555

Split a dataframe into any number of smaller dataframes with no more than N number of rows

I have a number of dataframes, each with different numbers of rows. I want to break them all into smaller dataframes that have no more than 50 rows each, for example.

So, if I had a dataframe with 107 rows, I want to output the following:

A dataframe containing rows 1-50
A dataframe containing rows 51-100
A dataframe containing rows 101-107

I have been reading many examples using the split() function but I have not been able to find any usage of split() or any other solution to this that does not pre-define the number of dataframes to split into, or scrambles the order of the data, or introduce other problems.

This seems like such a simple task that I am surprised that I have not been able to find a solution.

Upvotes: 0

Views: 108

Answers (1)

nicola
nicola

Reputation: 24480

Try:

split(df,(seq_len(nrow(df))-1) %/% 50)

What have in common the first 50 rows? If you make an integer division (%/%) of the index of row (less one) by 50, they all give 0 as result. As you can guess, rows 51-100 give 1 and so on. The (seq_len(nrow(df))-1) %/% 50 basically indicate the group you want to split into.

Upvotes: 4

Related Questions