새소식

R/dplyr

R | dplyr | 샘플 데이터 무작위 추출 - sample_frac(), sample_n()

  • -

 

 

 

dply 패키지에 데이터를 무작위로 추출해주는 함수

  • sample_frac() : 특정 비율만큼 무작위 추출
  • sample_n(): 특정 개수만큼 무작위 추출 

그 외에 R 내장 함수인 sample()도 같은 역할을 수행한다.

 

 

 

 


00. 데이터 불러오기 

 

MASS 패키지의 내장 데이터 셋인 'cars93' 데이터 셋 사용

※ MASS 패키지의 select()함수와 'dplyr' 패키지의 select() 함수가 충돌하기 때문에 MASS 패키지를 먼저 불러온 후 dplyr 패키지를 불러와야 한다. 

 

library(MASS)
library(dplyr)
df <- Cars93 
df <- df %>% select(Manufacturer:Price) # 1~5열까지만 select / 93행 5열

 

 

 

 


01. 비복원 추출

- 옵션 replace = False인 경우 비복원 추출.

- sample_n(), sample_frac() 함수의 default 는 비복원추출

01-1. sample_n  : 10개의 행 무작위 추출

# replace = F일 경우 비복원 추출
df %>% sample_n(size = 10, replace = F)

 

 

01-2. sample_frac  : 전체 행의 10% 무작위 추출

df %>% sample_frac(size = 0.1, replace = F)

 

 

 

01-3  R 내장함수 sample() : 10개 행 무작위 추출 

- sample(x, size, replace = False , prob = NULL)

 

set.seed(1234)
idx <- sample(1:nrow(df), size = 10, replace = F) # 10개의 인덱스가 랜덤으로 생성됨 

# 랜덤으로 생성된 인덱스를 사용해 10개의 행 추출
df[idx,]

 

sample 함수를 통해 생성된 10개의 인덱스
인덱스를 사용하여 10개 행 추출

 

 

01-4. group에 따른 무작위 추출

- 변수 Type의 그룹별로 각 2개씩 무작위 비복원 추출 

# sample_n() 사용
df %>% group_by(Type) %>% 
  sample_n(size = 2, replace = F)

 

 


02. 복원 추출

- 옵션 replace = True인 경우 복원 추출.

 

02-1. sample_n  : 20개 행 무작위 복원 추출 

df %>% sample_n(size = 20, replace = T)

 

 

02-2. sample_frac  : 전체 행의 20% 무작위 복원 추출 

df %>% sample_frac(size = 0.2, replace = T)

 

 

02-3  R 내장함수 sample() : 20개 행 무작위 복원 추출

- sample(x, size, replace = True , prob = NULL)

set.seed(1234)
idx <- sample(1:nrow(df), size = 20, replace = T)

df[idx,]

 

복원 추출이기 때문에 4번 인덱스가 3번 뽑힘

 

 

 

 

02-4. group에 따른 무작위 복원 추출

- 변수 Type의 그룹별로 각 2개씩 무작위 복원추출 

df %>% sample_n(size = 20, replace = T)

 

 

 

 

 


참고 문헌(reference)

Contents