새소식

R/dplyr

R | dplyr | 그 외 데이터 추출 - slice() , top_n()

  • -

 

이전 포스팅에서 dplyr 패키지에서 무작위 추출 시 사용하는 sample_n, sample_frac 함수와 달리

무작위 추출이 아닌 순서대로 뽑거나 원하는 구간을 설정해서 데이터를 뽑는 slice()와 

상위의 값을 추출해주는 top_n() 함수도 있다.

 

 


 

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. dplyr :: slice() 

 

 01-1. 단일 행 추출

# 3번째에 위치한 행 추출
df %>%  slice(3)

 

 

 01-2. 여러행 추출

# 2, 3, 6번째에 위치한 행 추출
df %>% slice(2,3,6)

 

 

 

 

 01-3. 행 범위 지정하여 추출

# 2에서 6번째에 위치한 5개의 행 추출
df %>% slice(2:6)

 

 

 

 01-4. group에 따른 행 추출 

# type별로 첫번째 위치한 행 추출
df %>% group_by(Type) %>% slice(1)

 

 

 

 

 


 

 

 

02. dplyr :: top_n()

 

02-1. top_n(x, n, wt) : 기준 컬럼에서  값이 가장 높은 n개의 데이터 추출

df %>% top_n(2, Price)

 

 

02-2. top_n(x, -n, wt) : 기준 컬럼에서  값이 가장 낮은 n개의 데이터 추출

df %>% top_n(-2, Price)

 

 

02-3. 그룹별로 price 값이 가장 낮은 1개의  데이터 추출

df %>% group_by(Type) %>% top_n(1, Price)

 

 

 

 

02-4. 그룹별로 price 값이 가장 낮은 1개의  데이터 추출

df %>% group_by(Type) %>% top_n(-1, Price)

 

 

 

 


참고 문헌(reference)

Contents