본문 바로가기
R Programming/dplyr 패키지

mutate( ) 함수: 파생변수 추가

by 블루드래곤 2022. 8. 9.
728x90

데이터의 기존 변수를 바탕으로 새로운 파생변수를 추가하고자 할 때 mutate( ) 함수를 효율적으로 사용할 수 있다. mutate( ) 함수는 기존 변수를 사용하여 연산을 수행하거나 조건문을 적용하여 분석 목적에 적합한 새로운 변수를 데이터 프레임에 직접적으로 추가할 수 있다. 구체적인 사용방법은 아래 예시와 같다.

 

Case 1: 단일 파생변수 추가

  • 예시: Ozone, Solar.R, Wind 등 3개 변수를 모두 합친 새로운 변수를 추가할 경우
  • mutate( ) 함수의 괄호 안에 파생변수 이름과 연산자를 입력
> airquality %>% mutate(total = Ozone + Solar.R + Wind) %>% head()

  Ozone Solar.R Wind Temp Month Day total
1    41     190  7.4   67     5   1 238.4
2    36     118  8.0   72     5   2 162.0
3    12     149 12.6   74     5   3 173.6
4    18     313 11.5   62     5   4 342.5
5    NA      NA 14.3   56     5   5    NA
6    28      NA 14.9   66     5   6    NA

 

Case 2: 여러 파생변수 추가

  • 예시: Ozone, Solar.R, Wind 등 3개 변수를 모두 합친 변수와 평균을 새로운 변수로 추가할 경우
  • 다음과 같이 쉼표를 이용해 새 변수 이름과 연산자를 입력
> airquality %>% 
+   mutate(total = Ozone + Solar.R + Wind, 
+          mean = (Ozone + Solar.R + Wind) / 3) %>% 
+   head()

  Ozone Solar.R Wind Temp Month Day total      mean
1    41     190  7.4   67     5   1 238.4  79.46667
2    36     118  8.0   72     5   2 162.0  54.00000
3    12     149 12.6   74     5   3 173.6  57.86667
4    18     313 11.5   62     5   4 342.5 114.16667
5    NA      NA 14.3   56     5   5    NA        NA
6    28      NA 14.9   66     5   6    NA        NA

 

Case 3: 조건에 따른 파생변수 추가

  • 예시: Ozone, Solar.R, Wind 등 3개 변수의 평균이 100보다 크면 "Good"로 분류하고 아닌 경우에는 "Bad"로 분류할 경우
  • ifelse( ) 함수를 적용하면 조건에 따라 다른 값을 부여한 변수를 추가할 수 있음.
> airquality %>% 
+   mutate(mean = (Ozone + Solar.R + Wind) / 3,
+          result = ifelse(mean > 100, "Good", "Bad")) %>% 
+   head()

  Ozone Solar.R Wind Temp Month Day      mean result
1    41     190  7.4   67     5   1  79.46667    Bad
2    36     118  8.0   72     5   2  54.00000    Bad
3    12     149 12.6   74     5   3  57.86667    Bad
4    18     313 11.5   62     5   4 114.16667   Good
5    NA      NA 14.3   56     5   5        NA   <NA>
6    28      NA 14.9   66     5   6        NA   <NA>

 

Case 4: mutate( ) 함수 + arrange( ) 함수

  • 파생변수를 추가하고 나면 바로 dplyr 패키지 함수에 활용이 가능함. 
  • 새로운 추가한 파생변수를 arrange( ) 함수에서 기준으로 삼아 정렬해 일부를 다음과 같이 출력할 수 있음.
> airquality %>% 
+   mutate(total = Ozone + Solar.R + Wind) %>%
+   arrange(desc(total)) %>% 
+   head()

  Ozone Solar.R Wind Temp Month Day total
1   168     238  3.4   81     8  25 409.4
2   135     269  4.1   84     7   1 408.1
3    80     294  8.6   86     7  24 382.6
4   122     255  4.0   89     8   7 381.0
5    71     291 13.8   90     6   9 375.8
6    97     272  5.7   92     7   9 374.7

댓글