SW/R

R : 샘플링(sampling), 조합(combination) (개념 및 예제)

얇은생각 2019. 2. 28. 12:30
반응형

샘플링(sampling)

많은 데이터 중 일부를 선택해야 할 때가 있습니다. 그 경우에 처리하는 기술을 샘플링이라고 합니다. 비복원 추출을 통해 중복되지 않은 랜덤한 값을 추출할 수 있습니다.


x <- 1:100
# x 에서 10개의 수를 임의로 추출 (비복원 추출)
y <- sample(x, size=10, replace = FALSE)
y
# [1] 37 43 18 95 29 51 52 28 88 67



데이터에서 임의의 행을 추출할 수 있습니다. 아래 예제를 참고하세요. replace의 기본값은 FALSE입니다. 


# iris 에서 50개의 행(row)을 임의로 추출 (비복원 추출)
idx <- sample(nrow(iris), size=50,
replace = FALSE)

iris.50 <- iris[idx,]
head(iris.50)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 88 6.3 2.3 4.4 1.3 versicolor
# 87 6.7 3.1 4.7 1.5 versicolor
# 1 5.1 3.5 1.4 0.2 setosa
# 96 5.7 3.0 4.2 1.2 versicolor
# 118 7.7 3.8 6.7 2.2 virginica
# 75 6.4 2.9 4.3 1.3 versicolor



조합(combination)

combn 함수를 통해 조합을 만들 수 있습니다. 아래 예제를 참고해보세요. 경우의 수를 만들어주어 원하는 데이터를 만들어낼 수 있습니다.


combn(5,3) # 5개중 3개를 뽑는 조합
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 1 1 1 1 1 2 2 2 3
# [2,] 2 2 2 3 3 4 3 3 4 4
# [3,] 3 4 5 4 5 5 4 5 5 5
x = c("red","green","blue","black","white")
com <- combn(x,2) # x 의 원소를 2개씩 뽑는 조합
com
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
# [1,] "red" "red" "red" "red" "green" "green" "green" "blue" "blue"
# [2,] "green" "blue" "black" "white" "blue" "black" "white" "black" "white"
# [,10]
# [1,] "black"
# [2,] "white"
for(i in 1:ncol(com)) {
cat(com[,i], "\n")
}
# red green
# red blue
# red black
# red white
# green blue
# green black
# green white
# blue black
# blue white
# black white


반응형