[R데이터분석] ifelse / case_when

근이의 개발일기·2024년 10월 21일
post-thumbnail

R에서 조건에 따라 값을 처리할 때 ifelse()case_when() 함수는 유용한 도구입니다. 두 함수는 서로 다른 방식으로 조건을 처리하지만, 둘 다 데이터를 변환하거나 특정 조건에 따라 값을 할당할 때 자주 사용됩니다.

1. ifelse()

ifelse() 함수는 벡터화된 조건문을 처리하는 간단한 방식입니다. ifelse()는 하나의 조건을 기준으로 TRUE일 때 반환할 값과 FALSE일 때 반환할 값을 지정합니다.

사용 예시:

# 벡터 생성
x <- c(1, 2, 3, 4, 5)

# ifelse를 사용하여 조건에 따라  반환
result <- ifelse(x > 3, "Greater than 3", "Less or equal to 3")
result

주요 특징:

  • ifelse(test, yes, no): test는 조건, yes는 조건이 TRUE일 때 반환할 값, no는 조건이 FALSE일 때 반환할 값입니다.
  • 하나의 조건을 기준으로 값을 처리할 때 매우 간단하게 사용할 수 있습니다.

예시 설명:

위 예시는 x 벡터의 각 값이 3보다 큰지 검사하여 TRUE인 경우 "Greater than 3", FALSE인 경우 "Less or equal to 3"을 반환합니다.


2. case_when()

case_when() 함수는 여러 조건을 처리할 때 사용되며, dplyr 패키지에서 제공됩니다. 여러 조건을 동시에 처리하거나 조건에 따라 다른 값을 반환할 때 매우 유용합니다.

사용 방법 (dplyr 패키지):

먼저, dplyr 패키지를 설치하고 로드합니다.

# dplyr 패키지 설치 및 로드
install.packages("dplyr")
library(dplyr)

# 벡터 생성
x <- c(1, 2, 3, 4, 5)

# case_when을 사용하여 여러 조건 처리
result <- case_when(
  x == 1 ~ "One",
  x == 2 ~ "Two",
  x > 2 ~ "Greater than Two",
  TRUE   ~ "Other"
)
result

주요 특징:

  • 여러 개의 조건을 한 번에 처리할 수 있습니다.
  • case_when()은 각 조건에 대해 값을 할당하며, ~을 사용하여 조건과 결과를 연결합니다.
  • 마지막 조건인 TRUE ~ "Other"는 모든 조건을 만족하지 않을 때 적용됩니다 (즉, else 역할을 합니다).

예시 설명:

위 코드에서 x 벡터에 대해 여러 조건을 적용합니다. x가 1이면 "One", 2이면 "Two", 2보다 크면 "Greater than Two"로 값을 할당하고, 모든 조건에 해당하지 않는 경우 "Other"를 반환합니다.


요약:

  • ifelse(): 하나의 조건으로 간단한 논리 연산을 수행하고, 조건이 TRUE 또는 FALSE일 때의 결과를 반환.
    • 사용 예: ifelse(x > 3, "Greater", "Less or equal")
  • case_when(): 여러 조건을 처리할 때 사용하며, 복잡한 조건문을 깔끔하게 작성할 수 있습니다. dplyr 패키지에서 제공.
    • 사용 예: case_when(x == 1 ~ "One", x > 2 ~ "Greater than Two")

두 함수 모두 데이터를 조건에 따라 처리하고자 할 때 매우 유용하며, 조건의 복잡성에 따라 적절히 선택해 사용하면 됩니다.

0개의 댓글