2015-06-14 15 views
6

Tytuł prawie to stwierdza. Mam ramkę danych, która ma 7 milionów wierszy, o wiele za dużo, abym mógł ją przeanalizować bez awarii mojego komputera. Chcę podzielić go na 100 mniejszych ramek danych z 70 000 wierszy, a 101-sza ramka danych ma pozostałe wiersze (< 70 000). Wygląda na to, że nie jest to banalne.Czy istnieje funkcja podziału dużej ramki danych na n mniejszych ramek danych o równym rozmiarze (według wierszy) i mają one ramkę danych n + 1 o mniejszym rozmiarze?

wiem mogę ręcznie obliczania wielkości n+1 dataframe, usuwając go, a następnie za pomocą funkcji split w następujący sposób:

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

Ale mam kilka dużych dataframes i robi wszystkie te obliczenia są nudny. Czy istnieje alternatywne rozwiązanie?

+0

Chcesz zapisz je na dysku? – Maiasaura

Odpowiedz

4

Jak o coś takiego:

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

Or abstrahując nieco więcej:

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

może warto rozważyć coś z pakietu caret takich jak: caret::createFolds(df$x)

Powiązane problemy