R

[R] 조건제어문 - if, ifelse, switch

ㄷㅐ장님 2022. 1. 14. 02:58

조건제어문

조건의 흐름을 제어

 

1. if문

if(조건){

조건이 참일때 수행

} else {

조건이 거짓일때 수행

}

⇒ 들여쓰기 주의

⇒ '거짓' 출력
⇒ 'y가 x보다 크다’ 출력


[문제76] x변수에 2를 입력한후 그 변수에 값이 2의 배수면 "2의 배수" 출력, 아니면 "2의 배수가 아니다" 출력해주세요.

더보기
더보기
x <-2
if (x %% 2==0){
print('2의 배수')
} else {
print('2의 배수가 아니다')
}

2. ifelse 함수

ifelse(조건,참,거짓)

ifelse(조건,참,ifelse(조건,참,거짓)) ⇒ 중첩가능


[문제77] x 변수에 1부터 100까지 입력한 후 짝수값은 자신의 값에 10을 곱한 값으로 수정하세요.

더보기
더보기
x <- c(1:100)
ifelse(x%%2==0,x*10,x)

[문제78] x <- c(2,10,6,4,3,NA,7,9,1) x 변수에 NA가 있으면 0으로 설정하세요.

더보기
더보기
ifelse(is.na(x),0,x)

[문제79] last_name, salary, commission_pct, commission_pct NA 면 salary * 12, 아니면 (salary * 12) + (salary * 12 * commission_pct)을 수행하세요.

더보기
더보기
df <- data.frame(name=employees$LAST_NAME,
                      sal=employees$SALARY,
                      com=employees$COMMISSION_PCT
                      nacom=ifelse(is.na(employees$COMMISSION_PCT),employees$SALARY * 12,
               (employees$SALARY * 12) + (employees$SALARY * 12 * employees$COMMISSION_PCT)))
df[order(df$nacom,decreasing = T),]

doBy::orderBy(~-nacom,df)

[문제80] last_name, salary, 급여가 10000 이상이면 A, 5000이상 10000보다 작으면 B, 나머지는 C가 입력되어 있는 새로운 컬럼을 생성하세요. 컬럼이름은 name, sal, level 로 설정하세요.

더보기
더보기
df <- data.frame(name=employees$LAST_NAME,
                      sal=employees$SALARY,
                      level=ifelse(employees$SALARY>=10000,'A',ifelse(employees$SALARY>=5000,'B','C')))

doBy::orderBy(~level-sal,df2)

3. switch

: 변수값에 따라 조건에 맞는 실행문을 수행하는 함수

 

switch(변수, 실행문1, 실행문2...)

'행복하게 살자' 출력
'백두산 가고 싶다' 출력