R에서는 dplyr 패키지를 이용하여 데이터 전처리를 진행할 수 있습니다.
dplyr 함수는 아래 8가지가 있으며, 오늘은 마지막 3가지 함수에 대해 알아보려고 합니다.
- filter( )
- select( )
- arrange( )
- mutate( )
- summarise( )
- group_by( )
- left_join( )
- bind_rows( )
group_by( ): 집단별로 나누기
데이터를 필터링 할 때, 특정 집단별로 나누고 싶다면 group_by( ) 함수를 사용합니다.
예시 1) 성별별로 데이터 나누기
df %>% group_by(sex)
예시 2) 제조사별로 시내주행 평균 출력
df %>% group_by(manufacturer) %>%
summarise(mean(city))
예시 3) 1차는 제조사, 2차는 자동차 모델별로 필터링
그룹을 1차, 2차 등 여러 순서로 묶을 때 아래와 같이 작성합니다.
df %>% group_by(manufacturer, model) %>%
summarise(mean(city))
left_join( ) : 데이터 합치기 (열)
예시) 중간고사 데이터와 기말고사 데이터 합치기
1. 중간고사와 기말고사 데이터 생성
# 중간고사 데이터 생성
test1 <- data.frame(id = c(1,2,3,4,5),
midterm = c(60,80,70,65,90))
# 기말고사 데이터 생성
test2 <- data.frame(id = c(1,2,3,4,5),
final = c(70,80,65,83,95))
결과값:
#test1 #test2
id midterm id final
1 60 1 70
2 80 2 80
3 70 3 65
4 65 4 83
5 90 5 95
2. id를 기준으로 합쳐 total이라는 데이터에 할당
total <- left_join(test1, test2, by = 'id')
결과값:
#total
id midterm final
1 60 70
2 80 80
3 70 65
4 65 83
5 90 95
bind_rows( ): 데이터 합치기 (행)
예시) 그룹 A와 그룹 B의 시험 점수 합치기
1. 그룹 A와 B의 시험 데이터 생성
# group A 데이터 생성
group_a <- data.frame(id = c(1,2,3,4,5),
test = c(60,80,70,95,68))
# group B 데이터 생성
group_b <- data frame(id=c(1,2,3,4,5),
test = c(70,83,65,95,80))
결과값:
#group A #group B
id midterm id final
1 60 1 70
2 80 2 83
3 70 3 65
4 95 4 95
5 68 5 80
2. 행을 기준으로 데이터 합치기
group_all <- bind_rows(group_a, group_b)
결과값:
#group_all
id midterm
1 60
2 80
3 70
4 95
5 68
1 70
2 83
3 65
4 95
5 80
'R' 카테고리의 다른 글
R - plotly: ggplot2 패키지 (2) (0) | 2022.03.17 |
---|---|
R - plotly: ggplot2 패키지 (1) (0) | 2022.03.17 |
R - 이상치/결측치 확인 및 처리 방법 (0) | 2022.03.17 |
R - dplyr 패키지 (1) (filter/ select/ arrange/ mutate/ summarise) (0) | 2022.03.17 |