2015-06-14 8 views
6

Il titolo lo afferma praticamente. Ho un frame di dati con 7 + milioni di righe, troppo grande per essere analizzato senza che la mia macchina si blocchi. Voglio dividerlo in 100 dataframes più piccoli con 70.000 righe e avere il 101 ° dataframe con le righe rimanenti (< 70.000). Sembra che questo non sia banale.Esiste una funzione per suddividere un grande dataframe in n datafram più piccoli di uguale dimensione (per riga) e avere un n + 1 dataframe di dimensioni più piccole?

So che potrei calcolare manualmente le dimensioni del n+1 dataframe, rimuoverlo, e quindi utilizzando la funzione split nel seguente modo:

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

Ma avere più grandi dataframes e fare tutti questi calcoli è noioso. C'è una soluzione alternativa?

+0

Vuoi per scrivere questi su disco? – Maiasaura

risposta

4

Che ne dite di qualcosa di simile:

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

O astrazione ancora un po ':

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

Si può prendere in considerazione qualcosa dal pacchetto caret come ad esempio: caret::createFolds(df$x)

Problemi correlati