[R] 조건문 만들기(if, ifelse,switch)

반응형
    반응형

    R에서의 조건식에 관한 내용입니다.
    조건식은 해당 데이터가 참이면 명령을 실행하고 거짓이면 실행하지 않는 방식을 의미합니다.

    if 문

    if, else if, else 등으로 이루어진 조건식으로 반복적으로 사용할 수 있습니다. 규칙이라면 if를 가장 먼저 쓰고 else if를 if와 else if 사이로 해야합니다. if 문이 잘 작성되었다면 아래 그림과 같이 순서대로 명령을 수행합니다.
    먼저 if가 True이면 if 안에 명령어를 수행하고
    if가 False면 else if의 명령어를, else if 도 False이면 else의 명령어를 수행하고 끝이 납니다

    if문은 if,else if 옆에 조건문을 쓰고 명령어는 대괄호 안에 씁니다.
    else는 조건문이 필요없고 명령어만 넣습니다.
    이렇게 해서 조건문을 만들면 명령을 수행하게 됩니다.
    참고로 else if 나 else는 필수는 아닙니다.
    여러개의 조건문이 필요할 때 추가로 써놓는 사항입니다.

     

    if (조건문){명령 내용}
    else if (조건문){명령 내용}
    else {명령 내용}

     

    예를 들어, 점수를 넣으면 A,B,C,D,F로 등급을 나누고 싶다고 한다면 다음과 같이 if문을 활용할 수 있습니다.

    score = 85
    if (score >=90 ){print('A')
    }else if (score >=80){print('B')
    }else if (score >=70){print('C')
    }else if (score >=60){print('D')
    }else {print('F')}

     

    85는 B 등급이므로 B가 됩니다.

    ifelse

    ifelse문은 참, 거짓으로만 분리만 해도 되는 경우 한번에 명령을 수행할 수 있어 편리합니다.
    파이썬 numpy에서의 where, 엑셀의 if 문과 비슷합니다.

     

    ifelse(조건식, 명령어1,명령어2)

    • 조건식이 참이면 명령어1 실행
    • 조건식이 거짓이면 명령어2 실행
    score = 85
    ifelse(score >=80,'P','F')

     

    switch

    swich는 if 를 안에 넣는 것이라 볼 수 있는데 변수를 기준으로 유형에 따라 명령어를 실행하는 형식입니다. 유형-명령어를
    key-value처럼 넣어주어야 합니다. 유형을 분류할 범주를 만들 때 굉장히 유용합니다.
    다음과 같이 작성합니다.

     

    switch(입력값, 유형1=명령어1,유형2=명령어2,,,명령어3)

     

    입력값이 유형1이면 명령어1을 수행하고 유형2이면 명령어2를 수행합니다.
    입력값이 모든 유형에 맞지 않으면 명령어3을 실행하게 됩니다.
    주의할 것은 유형은 반드시 문자로 입력해야 합니다.

    standard = '90'
    switch(standard,
          '90'= 'A',
          '80'= 'B',
          '70'= 'C',
          '60'= 'D',
          'F')

    또한, switch내의 명령어는 함수처럼 동작할 수 있습니다.

    grade = 'A'
    switch(grade,
          'A'= score+5,
          'B'= score-5,
          'C'= score-15,
          'D'= score-25,
          score-35)

     

    관련 포스팅

    [R] 반복문(for,while,repeat)

    'R' 카테고리의 다른 글

    [R] tidyverse 간단소개 및 설치  (0) 2022.05.21
    [R] 반복문(for,while,repeat)  (0) 2022.05.19
    [R] 데이터 결합하기  (0) 2022.05.13
    [R] 데이터 프레임 다루기  (0) 2022.05.06
    [R] 행렬(matrix) 다루기  (0) 2022.05.05

    댓글

    Designed by JB FACTORY

    ....