Dplyr에서 case_when()을 사용하는 방법
R의 dplyr 패키지에 있는 case_when() 함수를 사용하면 기존 변수에서 새 변수를 만들 수 있습니다.
이 함수는 다음 기본 구문을 사용합니다.
library (dplyr) df %>% mutate (new_var = case_when (var1 < 15 ~ ' low ', var2 < 25 ~ ' med ', TRUE ~ ' high '))
TRUE 는 “else” 문과 동일합니다.
다음 예에서는 다음 데이터 프레임에서 실제로 이 함수를 사용하는 방법을 보여줍니다.
#create data frame df <- data. frame (player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'), position = c('G', 'F', 'F', 'G', 'C', NA), points = c(12, 15, 19, 22, 32, NA), assists = c(5, 7, 7, 12, 11, NA)) #view data frame df player position points assists 1 AJ G 12 5 2 Bob F 15 7 3 Chad F 19 7 4 Dan G 22 12 5 Eric C 32 11 6 Frank NA NA NA
예시 1: 기존 변수에서 새 변수 만들기
다음 코드는 포인트 열에서 값이 파생되는 quality 라는 새 변수를 만드는 방법을 보여줍니다.
df %>% mutate (quality = case_when (points > 20 ~ ' high ', points > 15 ~ ' med ', TRUE ~ ' low ' )) player position points assists quality 1 AJ G 12 5 low 2 Bob F 15 7 low 3 Chad F 19 7 med 4 Dan G 22 12 high 5 Eric C 32 11 high 6 Frank NA NA NA low
Case_when() 함수가 새 열의 값을 생성한 방법은 다음과 같습니다.
- 포인트 열의 값이 20보다 크면 품질 열의 값이 “높음”입니다.
- 그렇지 않고 포인트 열의 값이 15보다 크면 품질 열의 값은 “med”입니다.
- 그렇지 않고 포인트 열의 값이 15(또는 NA와 같은 누락된 값)보다 작거나 같으면 품질 열의 값은 “낮음”입니다.
예 2: 여러 변수에서 새 변수 만들기
다음 코드는 포인트 및 지원 열에서 값이 파생되는 quality 라는 새 변수를 만드는 방법을 보여줍니다.
df %>% mutate (quality = case_when (points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA average
is.na() 함수를 사용하여 문자열을 NA 값에 명시적으로 할당할 수도 있습니다.
df %>% mutate (quality = case_when (is. na (points) ~ ' missing ', points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA missing
추가 리소스
R에서 줄을 정렬하는 방법
R에서 그룹당 관측치를 계산하는 방법
R에서 특정 문자열이 포함된 행을 필터링하는 방법