2015-06-14 2 views
6

Название довольно много говорит об этом. У меня есть кадр данных, который имеет 7 + миллион строк, слишком большой для меня, чтобы анализировать без моего сбоя в работе. Я хочу разбить его на 100 меньших фреймов данных с 70 000 строк и иметь 101-й блок данных с оставшимися строками (< 70 000). Кажется, что это нетривиально.Есть ли функция для разбиения большого кадра данных на n меньших фреймов данных равного размера (по строке) и с n + 1 размером данных меньшего размера?

Я знаю, что я мог бы вручную расчета размера n+1 dataframe, удаляя его, а затем с помощью функции split следующим образом:

d <- split(my_data_frame,rep(1:100,each=70,000)) 

Но у меня есть несколько больших dataframes и делать все эти вычисления в утомительный. Есть ли альтернативное решение?

+0

Хотите ли вы записать их на диск? – Maiasaura

ответ

4

Как о чем-то вроде этого:

df <- data.frame(x = 1:723500, y = runif(7235000)) 
split(df, rep(1:100, each = round(NROW(df)/100, -4))) 

Или абстрагирования еще немного:

num_dfs <- 100 
split(df, rep(1:num_dfs, each = round(NROW(df)/num_dfs, -4))) 

Вы можете рассмотреть что-то из caret пакета, такие как: caret::createFolds(df$x)

Смежные вопросы