私はRの新しいユーザーであり、データフレームの複数のサブサンプルを作成しようとしています。私は4つの階層(STRATUM = 1,2,3,4)に割り当てられたデータを持ち、各階層の指定された数の行だけをランダムに保持したい。これを達成するために、データをインポートし、階層化値でソートしてから、各行に乱数を割り当てます。将来の分析でそれらを再度使用する必要があるので、元の乱数割り当てを保持したいので、これらの値で.csvを保存します。次に、データをその階層でサブセット化し、各階層に保持するレコードの数を指定します。最後に、データに再び参加し、新しい.csvファイルとして保存します。コードは機能しますが、このプロセスを100回繰り返す必要があります。いずれの場合も、無作為に選択されたプロットの最後の.csvと同様に、割り当てられた乱数で.csvを保存します。このコードブロックを100倍にする方法と、繰り返しごとに一意のファイル名を割り当てる方法についてはわかりません。どんな助けでも大歓迎です。R - 新しい乱数とプロットの削除を使ってデータフレームの操作を100倍繰り返す方法
DataFiles <- "//Documents/flownData_JR.csv"
PlotsFlown <- read.table (file = DataFiles, header = TRUE, sep = ",")
#Sort the data by the stratification
FlownStratSort <- PlotsFlown[order(PlotsFlown$STRATUM),]
#Create a new column with a random number (no duplicates)
FlownStratSort$RAND_NUM <- sample(137, size = nrow(FlownStratSort), replace = FALSE)
#Sort by the stratum, then random number
FLOWNRAND <- FlownStratSort[order(FlownStratSort$STRATUM,FlownStratSort$RAND_NUM),]
#Save a csv file with the random numbers
write.table(FLOWNRAND, file = "//Documents/RANDNUM1_JR.csv", sep = ",", row.names = FALSE, col.names = TRUE)
#Subset the data by stratum
FLOWNRAND1 <- FLOWNRAND[which(FLOWNRAND$STRATUM=='1'),]
FLOWNRAND2 <- FLOWNRAND[which(FLOWNRAND$STRATUM=='2'),]
FLOWNRAND3 <- FLOWNRAND[which(FLOWNRAND$STRATUM=='3'),]
FLOWNRAND4 <- FLOWNRAND[which(FLOWNRAND$STRATUM=='4'),]
#Remove data from each stratum, specifying the number of records we want to retain
FLOWNRAND1 <- FLOWNRAND1[1:34, ]
FLOWNRAND2 <- FLOWNRAND2[1:21, ]
FLOWNRAND3 <- FLOWNRAND3[1:7, ]
FLOWNRAND4 <- FLOWNRAND4[1:7, ]
#Rejoin the data
FLOWNRAND_uneven <- rbind(FLOWNRAND1, FLOWNRAND2, FLOWNRAND3, FLOWNRAND4)
#Save the table with plots removed from each stratum flown in 2017
write.table(FLOWNRAND_uneven, file = "//Documents/Flown_RAND_uneven_JR.csv", sep = ",", row.names = FALSE, col.names = TRUE)
最終的な結果として、私は階層2から21行、階層3から7行、及び階層4から7行、私の元のデータ列の全てを有した.csvをしたいが、唯一の34行階層1からそれぞれの階層内のこれらの行をランダムに選択して、反復を行うたびに階層ごとに異なる行のサブセットを取得するようにします。私はこのプロセスを100回繰り返し、100個の.csvファイルを生成したい。 –