2017-10-30 6 views
0

dfをxとほぼ同じグループに分割する場合、を順番にとします。データフレームをxにほぼ等しいグループに分割する - 連続して

は、私は基本的に、このようにそれをやっていた:

df_1 <- df[1:10,] 
df_2 <- df[11:21,] 
df_3.. 

は、分割またはスライスを使用して、これを行うための簡単な方法はありますか?重要なのは、サンプルからではなく、dfの順序を維持したいということです。

私には7000件の観測があり、19個のグループがほぼ等しいとします。

ベスト!

+0

] @最後のグループがこのオプションで切り捨てられDB、私はしないでください –

+2

'split(BOD、cut(1:nrow(BOD)、3、FALSE))'データフレームBODを3つのコンポーネントのリストに分割します。 –

+0

^これはうまく動作します、ありがとうございます! – wimlouw

答えて

0

それが等しいroughlyのためにカウントかどうかは知りませんが、これを行うことができます。

nobs <- 7000 
ngroups <- 17 
df <- data.frame(x = sample(nobs)) 
set.seed(1) 
df$grp <- sort(sample(1:ngroups,nobs,T)) # added the sort so the order of your df is maintained 
table(df$grp) 
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 
# 436 407 410 369 417 411 440 401 431 411 356 398 390 414 443 418 448 

その後、split(df,df$grp)

+0

私は次のように行きました: "ngroups"はdfを分割するグループの数です: '' 'split(df、cut(1:nrow(df)、ngroups、FALSE))' '' – wimlouw

関連する問題