Разбить блок данных по количеству строк

У меня есть dataframe, состоящий из 400'000 строк и около 50 столбцов. Поскольку этот dataframe настолько велик, он слишком вычислительно облагается налогом для работы. Я хотел бы разбить этот файл данных на более мелкие, после чего я запустил функции, которые я хотел бы запустить, а затем снова собрать данные в конце.

Нет никакой переменной группировки, которую я хотел бы использовать для разделения этого фрейма. Я просто хотел бы разделить его на количество строк. Например, я хотел бы разбить эту таблицу 400'000 строк на 400 1 000 строк данных. Как я могу это сделать?

Ответы

Ответ 1

Создайте собственную переменную группировки.

d <- split(my_data_frame,rep(1:400,each=1000))

Вы также должны рассмотреть функцию ddply из пакета plyr или group_by() из dplyr.

отредактированный для краткости, после комментариев Хэдли.

Если вы не знаете, сколько строк находится в кадре данных, или если кадр данных может быть неравной длиной вашего желаемого размера, вы можете сделать

chunk <- 1000
n <- nrow(my_data_frame)
r  <- rep(1:ceiling(n/chunk),each=chunk)[1:n]
d <- split(my_data_frame,r)

Вы также можете использовать

r <- ggplot2::cut_width(1:n,chunk,boundary=0)

Для будущих читателей методы, основанные на пакетах dplyr и data.table, вероятно, будут (намного) быстрее выполнять групповые операции с кадрами данных.