[R] 숫자 데이터 범위에 따라 그룹 지정하기 (feat. ifelse)

해당 포스트에서는 R에서 숫자 데이터 범위에 따라 그룹을 지정하는 방법에 대해 소개합니다.

ifelse-example-in-r

INTRO

ifelse() 함수는 R 프로그래밍 언어에서 자주 사용되는 함수 중 하나로, 간단한 조건문을 작성할 때 사용되며, if-else 문의 간단한 버전이라고 생각하시면 됩니다. 자주 사용되는 함수이기도 하지만, 쉽게 사용할 수 있어 간단한 예시 몇 개만 익히신다면 금방 마스터하실 수 있습니다.


아래에서는 간단한 예시와 함께 코드 사용 방법에 대해 설명합니다.

문제 풀어보기

먼저, 0부터 12까지의 정수를 갖는 숫자 벡터인 mydata를 생성하고, 이를 출력해 보겠습니다.

# 숫자 벡터 생성
mydata <- 0:12

# 생성된 벡터 출력
mydata
[1]  0  1  2  3  4  5  6  7  8  9 10 11 12


위에서 만든 mydata를 가지고 ifelse() 함수를 사용하여 mydata 벡터의 값이 어떤 범위에 속하는지에 따라 "a", "b", "c", "d" 라벨(label) 또는 그룹(group)을 부여하고, 그렇지 않은 경우에는 NA 값을 반환하게 해보겠습니다.

아래 코드에서는 ifelse() 함수를 중첩 사용하여 풀이하는데, 이는 R에서 매우 자주 사용되는 코드 패턴 중 하나로, 다양한 조건을 검사하고 각 조건에 따른 값을 반환하는 것이 가능합니다.

# 조건문을 사용하여 라벨 부여
ifelse(mydata < 3, "d",
       ifelse(mydata < 6, "c",
              ifelse(mydata < 10, "b",
                     ifelse(mydata >= 10, "a", NA))))
[1] "d" "d" "d" "c" "c" "c" "b" "b" "b" "b" "a" "a" "a"

코드 작동 순서

위 코드는 아래의 순서로 처리가 진행됩니다.

  1. mydata 벡터의 값이 3보다 작으면 "d" 라벨을 반환합니다.
  2. mydata 벡터의 값이 3보다 크거나 같고 6보다 작으면 "c" 라벨을 반환합니다.
  3. mydata 벡터의 값이 6보다 크거나 같고 10보다 작으면 "b" 라벨을 반환합니다.
  4. mydata 벡터의 값이 10보다 크거나 같으면 "a" 라벨을 반환합니다.


이 코드는 여러 개의 if문을 중첩하는 것보다 ifelse() 함수를 사용하여 코드의 가독성을 높이고 작성 시간을 단축시킬 수 있습니다. 또한, 이 코드는 벡터의 모든 값에 대해 동일한 조건식을 적용하므로, 벡터의 길이가 매우 길어져도 간단하게 코드를 작성할 수 있습니다.

마무리

ifelse() 함수는 R 프로그래밍 언어에서 자주 사용되는 함수 중 하나입니다. 이 함수를 사용하면 조건문을 간단하고 직관적으로 작성할 수 있으며, 코드의 가독성을 높일 수 있습니다. 이번 기회에 ifelse() 함수를 배우시면, R 프로그래밍을 보다 쉽고 효율적으로 작성할 수 있게 될 되실거라 생각합니다.

관련 링크

[1] [R] 데이터 프레임 내 모든 숫자를 '홀수'와 '짝수'로 바꾸기
[2] [R] 성적 데이터 합격여부 판단하기 (PASS or FAIL)