R의 sample 함수를 사용하여 샘플을 생성하는 방법


R의 Sample() 함수를 사용하면 데이터 세트나 벡터에서 대체 여부에 관계없이 요소의 무작위 샘플을 가져올 수 있습니다.

Sample() 함수의 기본 구문은 다음과 같습니다.

샘플(x, 크기, 대체 = FALSE , prob = NULL )

x : 샘플을 선택할 데이터 세트 또는 벡터
크기 : 샘플 크기
교체 : 교체와 함께 샘플링을 수행해야 합니까? (기본값은 FALSE입니다)
prob : 샘플링된 벡터의 요소를 얻기 위한 확률 가중치의 벡터

샘플()에 대한 전체 문서는 여기에서 찾을 수 있습니다.

다음 예에서는 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

또한 교체 = 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() 함수의 또 다른 일반적인 용도는 데이터 세트에서 임의의 행 샘플을 생성하는 것입니다. 다음 예에서는 총 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)를 사용했기 때문에 정확히 동일한 샘플을 얻어야 합니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다