R の sample 関数を使用してサンプルを生成する方法
R のsample()関数を使用すると、置換の有無にかかわらず、データセットまたはベクトルから要素のランダムなサンプルを取得できます。
sample() 関数の基本構文は次のとおりです。
サンプル (x、サイズ、置換 = FALSE 、確率 = NULL )
x : サンプルを選択するデータセットまたはベクトル
サイズ:サンプルサイズ
replace : サンプリングは置換とともに実行されるべきですか? (デフォルトでは FALSE です)
prob : サンプリングされたベクトルの要素を取得するための確率重みのベクトル
sample() の完全なドキュメントはここにあります。
次の例は、sample() を使用する実際の例を示しています。
ベクターからサンプルを生成する
10 個の要素を含むベクトルaがあるとします。
#define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
ベクトルaの 5 つの要素のランダムなサンプルを置換なしで生成するには、次の構文を使用できます。
#generate random sample of 5 elements from vector a
sample(a, 5)
#[1] 3 1 4 7 5
ランダムなサンプルを生成するたびに、毎回異なるアイテムのセットが得られる可能性があることに注意することが重要です。
#generate another random sample of 5 elements from vector a
sample(a, 5)
#[1] 1 8 7 4 2
結果を複製して毎回同じサンプルを使用できるようにしたい場合は、 set.seed()を使用できます。
#set.seed(some random number) to ensure that we get the same sample each time set.seed(122) #define vector a with 10 elements in it a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) #generate random sample of 5 elements from vector a sample(a, 5) #[1] 10 9 2 1 4 #generate another random sample of 5 elements from vector a sample(a, 5) #[1] 10 9 2 1 4
replace = TRUE引数を使用して、置換を使用してサンプリングすることもできます。これは、ベクトルの各要素をサンプル内に複数回出現するように選択できることを意味します。
#generate random sample of 5 elements from vector a using sampling with replacement
sample(a, 5, replace = TRUE)
#10 10 2 1 6
データセットからサンプルを生成する
Sample() 関数のもう 1 つの一般的な使用法は、データ セットから行のランダム サンプルを生成することです。次の例では、合計 150 行ある組み込み R データセットirisから 10 行のランダム サンプルを生成します。
#view first 6 rows of iris dataset head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species #1 5.1 3.5 1.4 0.2 setosa #2 4.9 3.0 1.4 0.2 setosa #3 4.7 3.2 1.3 0.2 setosa #4 4.6 3.1 1.5 0.2 setosa #5 5.0 3.6 1.4 0.2 setosa #6 5.4 3.9 1.7 0.4 setosa #set seed to ensure that this example is replicable set.seed(100) #choose a random vector of 10 elements from all 150 rows in iris dataset sample_rows <- sample(1:nrow(iris), 10) sample_rows #[1] 47 39 82 9 69 71 117 53 78 25 #choose the 10 rows of the iris dataset that match the row numbers above sample <- iris[sample_rows, ] sample # Sepal.Length Sepal.Width Petal.Length Petal.Width Species #47 5.1 3.8 1.6 0.2 setosa #39 4.4 3.0 1.3 0.2 setosa #82 5.5 2.4 3.7 1.0 versicolor #9 4.4 2.9 1.4 0.2 setosa #69 6.2 2.2 4.5 1.5 versicolor #71 5.9 3.2 4.8 1.8 versicolor #117 6.5 3.0 5.5 1.8 virginica #53 6.9 3.1 4.9 1.5 versicolor #78 6.7 3.0 5.0 1.7 versicolor #25 4.8 3.4 1.9 0.2 setosa
上記のコードをコピーして独自の R コンソールに貼り付けると、毎回同じサンプルを取得するためにset.seed(100)を使用しているため、まったく同じサンプルが取得されるはずであることに注意してください。