私は大きなデータセットを持っています。それぞれが等しいサイズ「s」の「n」個のサブデータセットに分割したい。ただし、最後のデータ セットは、数値で割り切れない場合、他のサイズよりも小さくなる場合があります。csvファイルとして作業ディレクトリに出力します。
次の小さな例を考えてみましょう:
set.seed(1234)
mydf <- data.frame (matrix(sample(1:10, 130, replace = TRUE), ncol = 13))
mydf
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13
1 3 7 1 9 6 4 7 5 8 2 2 2 8
2 5 3 4 6 9 5 3 10 5 8 10 2 10
3 4 6 10 4 4 6 3 4 2 9 9 2 9
4 10 10 9 4 3 7 7 7 10 6 7 10 2
5 10 3 9 3 2 10 9 6 4 4 4 6 3
6 7 2 8 7 5 5 10 10 9 3 7 8 4
7 3 2 2 7 10 9 2 2 10 1 1 10 4
8 3 9 9 7 3 1 7 6 10 3 10 3 2
9 9 3 6 9 3 2 2 3 4 2 9 10 10
10 6 4 3 3 5 9 3 9 10 7 4 6 10
データセットを n 個のサブセットにランダムに分割する関数を作成します (この場合、13 列あるためサイズ 3 とします - 最後のデータセットには 1 列残り 4 列があり、それぞれ 3 列があります)、別のテキスト ファイルとして出力します。データセット。
これが私がしたことです:
set.seed(123)
reshuffled <- sample(1:length(mydf),length(mydf), replace = FALSE)
# just crazy manual divide
group1 <- reshuffled[1:3]; group2 <- reshuffled[4:6]; group3 <- reshuffled[7:9]
group4 <- reshuffled[10:12]; group5 <- reshuffled[13]
# just manual
data1 <- mydf[,group1]; data2 <- mydf[,group2]; ....so on;
# I want to write dimension of dataset at fist row of each dataset
cat (dim(data1))
write.csv(data1, "data1.csv"); write.csv(data2, "data2.csv"); .....so on
100 個のサブ データセットを生成する必要があるため、プロセスをループすることはできますか?