2016-03-22 4 views
0

Моей проблемы:Как сделать меньшие подмножества, основанных на фиксированном количество строк повторяющихся по dataframe

У меня есть dataframe, состоящий из 86016000 рядов наблюдений:

  1. существует 512000 наблюдения для каждый час
  2. есть 24 часа данные в течение семи дней
  3. Так 24*7*512000 = 86016000
  4. т здесь находятся 40 столбцов (переменные)
  5. Нет колонки с датой или точкой отсчета
  6. Только номера строк достаточно хороши, чтобы определить, сколько обс. на каждый день, и нет ошибок при записи этих данных.

Учитывая такой большой набор данных, что я хочу сделать, это создать подмножества 12288000 (т.е. 24 * 512000) строк, так что мы имеем 7 каждый день подмножества.

Что я пробовал:

d <- split(PltB_Fold3_1_Data, rep(1:12288000, each=7)) 

Но, к сожалению, после того, как почти полчаса, я termicated процесс, поскольку не было никакого результата.

Есть ли лучшее решение, чем выше?

+0

С таким большим количеством данных я бы не захотел сделать еще одну копию всего нарезанного. Я, вероятно, просто работаю с подмножеством интересов, используя 'df [1: 12288000,]' – cory

+0

Спасибо @cory. Только проблема в вашем предложении заключается в том, что я не могу повторить и получить 7 подмножеств, то есть subset1 = от 1 до 12288000 строк, подмножество2 = от 12288001 до 24576000 строк и т. Д. –

ответ

1

Возможно, вы ищете seq, а не rep. С помощью seq вы можете сгенерировать последовательность чисел от 0 до 86016000 с шагом 12288000.

Чтобы сохранить ресурсы, вы можете использовать эту последовательность для создания временных кадров данных и делать все, что захотите, с каждым.

sequence <- seq(from = 0, to = 86016000, by = 12288000) 

for(i in 1:(length(sequence)-1)){ 
    temp <- df[sequence[i]+1:sequence[i+1], ] 
    # do something here with your temporary data frame 
} 
+0

Большое спасибо @edomt за ваше предложение. он работает с небольшим tweeking. –