2016-03-22 11 views
0

Mein Problem wiederholen:Wie kleinere Untergruppen zu bilden, basierend auf eine feste Anzahl von Zeilen über den Datenrahmen

Ich habe einen Datenrahmen von 86.016.000 Reihen von Beobachtungen aus:

  1. gibt es 512000 Beobachtungen für jede Stunde
  2. gibt es 24 Stunden Daten für sieben Tage
  3. So 24*7*512000 = 86016000
  4. t Hier sind 40 Spalten (Variablen)
  5. Es gibt keine Spalte mit Datum oder DatumZeitstempel
  6. Nur Zeile Zahlen sind gut genug, um zu identifizieren, wie viele obs. für jeden Tag, und es gibt keine Fehler bei der Aufzeichnung dieser Daten.

eine so große Datenmenge gegeben, was ich will zu tun ist, erstellen Teilmengen von 12288000 (d 24 * 512000) Reihen, so dass wir 7 haben jede Teilmenge des Tages.

Was ich versuchte:

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

Aber leider nach fast einer halben Stunde, ich termicated den Prozess, da es kein Ergebnis.

Gibt es eine bessere Lösung als die obige?

+0

Mit so viel Daten, ich möchte nicht eine weitere Kopie von allem in Scheiben geschnitten machen. Ich würde wahrscheinlich nur mit der Teilmenge von Interesse arbeiten mit 'df [1: 12288000,]' – cory

+0

Dank @cory. Das einzige Problem hier in Ihrem Vorschlag ist, ich kann nicht wiederholen und 7 Teilmengen erhalten, d. H. Teilmenge 1 = 1 bis 12288000 Zeilen, Teilmenge 2 = 12288001 bis 24576000 Zeilen und so weiter. –

Antwort

1

Sie suchen wahrscheinlich nach seq statt rep. Mit seq können Sie eine Folge von Zahlen von 0 bis 86016000 um 12288000 erhöht generieren.

Um Ressourcen zu sparen, können Sie diese Sequenz verwenden, um temporäre Datenrahmen zu generieren und alles, was Sie wollen, mit jedem zu tun.

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

Vielen Dank @edomt für Ihren Vorschlag. es funktioniert mit wenig Tweeking. –