Dplyr: 여러 조건에서 mutate()를 사용하는 방법


dplyr 에서 다음 기본 구문을 사용하여 mutate() 함수를 사용하여 여러 조건에 따라 새 열을 생성할 수 있습니다.

 library (dplyr)

df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

이 특정 구문은 다음 값을 사용하는 class 라는 새 열을 생성합니다.

  • A_팀이 A와 같고 점수가 20보다 크거나 같으면 좋음 .
  • A_ 팀이 A와 같고 점수가 20점 미만인 경우 나쁨.
  • B_ 팀이 B와 같고 점수가 20보다 크거나 같으면 좋음.
  • 이전 조건 중 어느 것도 충족되지 않으면 B_Bad입니다 .

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

관련 항목: dplyr에서 case_when()을 사용하는 방법

예: 여러 조건으로 dplyr에서 mutate() 사용

다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25))

#view data frame
df

   team points
1 to 22
2 to 30
3 to 34
4 to 19
5 to 14
6 B 12
7 B 39
8 B 15
9 B 22
10 B 25

mutate() 함수와 함께 다음 구문을 사용하여 값이 포인트 열의 값을 기반으로 하는 class 라는 새 열을 생성할 수 있습니다.

 library (dplyr)
#add new column based on values in team and points columns
df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

#view updated data frame
df

   team points class
1 A 22 A_Good
2 A 30 A_Good
3 A 34 A_Good
4 A 19 A_Bad
5 A 14 A_Bad
6 B 12 B_Bad
7 B 39 B_Good
8 B 15 B_Bad
9 B 22 B_Good
10 B 25 B_Good

  새로운 클래스 열은 포인트 열의 값을 기반으로 값을 가져옵니다.

예를 들어 첫 번째 행의 열에는 A 값이 있고 20 이상의 포인트 값이 있으므로 새 클래스 열에서는 A_Good 값을 받았습니다.

이 예에서는 & 기호를 “AND” 연산자로 사용하여 클래스 열에 값을 할당하기 전에 두 조건이 모두 참인지 확인했습니다.

그러나 |를 사용할 수도 있었습니다. 대신 클래스 열에 값을 할당하기 전에 두 조건 중 하나가 충족되었는지 확인하려면 “OR” 연산자로 기호를 사용하세요.

추가 리소스

다음 튜토리얼에서는 dplyr에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

dplyr: 열에 문자열이 포함된 경우 변수를 변경하는 방법
dplyr: mutate()를 사용하여 요인 수준을 변경하는 방법
dplyr: across() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다