데이터분석/R

R 프로그래밍 3 - R 문법 기초2 연산자 와 조건문(if, else if, ifelse)

devbean 2021. 1. 1. 07:22
반응형

오늘은 R 문법에서 연산자, 조건문에 대해서 알아보겠습니다.

 

1. 연산자

- 산술연산자

a <- 1+2 #더하기
b <- 2-1 #빼기
c <- 3*2 #곱하기
d <- 6/3 #나누기
e <- 2^2 #거듭제곱
f <- 27 %/% 4 #나눗셈정수
g <- 27 %% 4 #나눗셈나머지

R에서 기본으로 제공되는 산술연산자는 다른 프로그래밍 언어와 비슷합니다.

 

- 논리연산자

연산자 기능
== 같다.
!= 같지않다.
> 크다.
>= 크거나 같다.
< 작다.
<= 작거나 같다.
&& AND 조건
|| OR 조건

논리연산자도 이렇게 구성되어 있습니다.


2. 조건문(if, else if, ifelse)

 

- if와 else if

 

if문은 만일 내가 어떠한 조건에 대해서 처리를 해야 할때 쓰는 조건문입니다.

예를 들어 내가 어떤 a라는 변수가 50이상일때 "yes"라는 텍스트를 출력해야 한다고 가정해봅시다.

 

여기서

조건: a라는 변수가 50이상일때

연산: "yes"라는 텍스트를 출력

 

이런 작업을 할때 조건문이 적당할 수 있습니다.

 

# 기본적으로 이런식으로 되어있다.

if(조건){
  연산
} else {
  연산
}

# if 조건은 여러개 쓸때는 else if를 활용한다.
if(조건) {
  연산
} else if(조건) {
  연산
} else {
  연산
}

 

기본적인 문법은 이렇게 되어있습니다.

예시로 알아볼까요?

 

x가 5보다 크면 yes를 출력하고 5이하면 no를 출력하는 if문이 있다고 가정해봅시다.

x <- 5

if(x >= 5) {
  print("yes")
} else {
  print("no")
}

x 가 5일때 출력결과는 이렇게 나올 것 입니다.

 

R 프로그래밍 IF문 예제1

 

이번엔 아래예제로 하나 더 알아보겠습니다.

1. x가 5 이하고 3이상인경우 "yes" 출력

2. x가 1 이상이고 2이하면 "soso" 출력

3. x가 위의 경우가 아닌경우 "no" 출력

x <- 5

if(x <= 5 && x >= 3) {
  print("yes")
} else if (x <= 1 && x >= 2){
  print("soso")
} else {
  print("no")
}

 

x 가 5일때 출력결과는 이렇게 나올 것 입니다.

&&를 활용해서 이상 이하가 같은 레벨의 조건안에 있을때 이런식으로 처리할 수 있습니다.

R 프로그래밍 IF문 예제2

- ifelse

 

ifelse는 if문을 좀 간결하게 사용할때 + 벡터단위로 연산이 필요할때 사용됩니다.

#하나의 조건을 활용할때
ifelse (조건, 조건을 만족했을시 값, 조건을 불만족 했을 시 값)

#세가지 이상의 조건을 활용할때
ifelse (조건1, 조건1을 만족했을시 값, 
	ifelse(조건2, 조건2을 만족했을시 값,
    		ifelse(조건3, 조건3을 만족했을시 값, 조건을 불만족 했을 시 값)))


예시를 들어봅시다.

1. 10,20,30,50,70,80,90,100으로 이루어진 시험점수 벡터가 있다고 가정

2. 시험의 합격점수는 50점임

3. 시험점수 벡터를 이용하여 "합격" 과 "불합격" 으로 벡터를 만들고 싶음

 

이 경우에 if문을 활용한다면 리스트, 반복문, if문등 매우 귀찮은 작업들을 해줘야 합니다.

이렇게 벡터단위로 조건 연산을 처리할때는 ifelse가 매우 유용합니다.

 

ifelse로 위의 조건을 처리

#시험점수 벡터
grade <- c(10,20,30,50,70,80,90,100)

#ifelse를 활용한 합격여부벡터
is_pass <- ifelse (grade >= 50, '합격', '불합격')
print(is_pass)

 

출력결과

R 프로그래밍 ifelse 예제1

 

다른 예시를 들어보겠습니다.

1. 10,20,30,50,70,80,90,100으로 이루어진 시험점수 벡터가 있다고 가정

2. 시험의 합격점수는 50점임

3. 90점 이상에게 장학금을 주고싶음

3. 시험점수 벡터를 이용하여 "합격" 과 "불합격"과 "장학금" 을 벡터로 만들고 싶음

 

이경우 아까보다 조건이 1개 더 많아졌죠?

이랬을 때 조건을 불만족 했을때 넣는 값 자리에 ifelse를 하나 더 넣어주면됩니다.

 

#시험점수 벡터
grade <- c(10,20,30,50,70,80,90,100)

#ifelse를 활용한 합격여부벡터
is_pass <- ifelse (grade >= 90, '장학금', 
                   ifelse(grade >= 50, '합격','불합격'))

print(is_pass)

 

R 프로그래밍 ifelse 예제2

 


마치며

오늘은 R 프로그래밍에서 연산자와 조건문에 대해서 알아봤습니다.

다음엔 반복문과 함수에 대해서 알아보도록 하겠습니다.

 

 

 

 

 

반응형