私は 52 個の数値 (一部は同じ数値) のデータ セットを持っており、このデータ セットからサイズ 5 の 2000 サンプルを取得する必要があります。サンプル関数とループ関数を使用して R コンソールでこれを行うにはどうすればよいですか?
3 に答える
            3        
        
		
sampleここでreplicateは便利な組み合わせになる可能性があります。
> # generating a data set consisting of 52 numbers
> set.seed(1)
> numbers <- sample(1:30, 52, TRUE) # a vector of 52 numbers, your sample
> 
> # 20 samples of size five (I chose 10 intead of 2000 for this example)
> set.seed(2)
> results <- replicate(10, sample(numbers, 5))
> results
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    2   21   27   16   25   12    8   15   26    20
[2,]   21   29   21   21   24   20   19   17   15    21
[3,]   27   20   22    6   20   30   25   24   27    30
[4,]   19   20   19    7   20   15   24   26   20     9
[5,]   24    1   24   28   22   29    9   20   24    22
各サンプルは、 と呼ばれる行列の列ごとに格納されますresults。次のコードは、探している答えを提供します。2 つの選択肢があることに注意してください。設定replace=TRUEまたはreplace=FALSEは、置換ありまたは置換なしのサンプリングを許可します。
results1 <- replicate(2000, sample(numbers, 5, replace=TRUE)) # sampling with replacement
results2 <- replicate(2000, sample(numbers, 5, replace=FALSE))  # sampling without replacement
    于 2013-10-10T16:56:06.370   に答える
    
    
            3        
        
		
置換を使用してサンプリングする場合 (指定しなかった場合)、サイズ 5 の 2000 サンプルは、5 つのグループに分割された 10,000 サンプルと変わらないことに注意してください。
Y <- sample(x, 10000, replace = TRUE)
それをいくつかの方法で分割できます。data.frameロングフォーマットmatrix用またはワイド用を作成できます。
# long format
dat <- data.frame(id = rep(1:5, 2000), Y)
# wide format
dat <- matrix(Y, nrow = 5)
    于 2013-10-10T17:30:47.227   に答える
    
    
            0        
        
		
ここではループは必要ありません。可能であれば、R でのループは避けてください。関数を使用できますreplicate。これは、各「複製」が列になるように行列を返します(デフォルト):
# x = your data here
n.samples = 2000
sample.size = 5
do.replace = FALSE
sample.matrix = replicate(n.samples, sample(x, sample.size, replace = do.replace))
print(sample.matrix)
    于 2013-10-10T18:18:24.203   に答える