초보자의 빅데이터 정복기
22-08-05 chap04_1_Control 본문
chap04_1_Control
# <실습> 산술연산자
num1 <- 100 # 피연산자1
num2 <- 20 # 피연산자2
result <- num1 + num2 # 덧셈
result # 120
result <- num1 - num2 # 뺄셈
result # 80
result <- num1 * num2 # 곱셈
result # 2000
result <- num1 / num2 # 나눗셈
result # 5
result <- num1 %% num2 # 나머지 계산
result # 0
result <- num1^2 # 제곱 계산(num1 ** 2)
result # 10000
result <- num1^num2 # 100의 20승
result # 1e+40 -> 1 * 10의 40승과 동일한 결과
# <실습> 관계연산자 : T/F 반환
# (1) 동등비교
boolean <- num1 == num2 # 두 변수의 값이 같은지 비교
boolean # FALSE
boolean <- num1 != num2 # 두 변수의 값이 다른지 비교
boolean # TRUE
# (2) 크기비교
boolean <- num1 > num2 # num1값이 큰지 비교
boolean # TRUE
boolean <- num1 >= num2 # num1값이 크거나 같은지 비교
boolean # TRUE
boolean <- num1 < num2 # num2 이 큰지 비교
boolean # FALSE
boolean <- num1 <= num2 # num2 이 크거나 같은지 비교
boolean # FALSE
# <실습> 논리연산자(and, or, not, xor)
logical <- num1 >= 50 & num2 <=10 # 두 관계식이 같은지 판단
logical # FALSE
logical <- num1 >= 50 | num2 <=10 # 두 관계식 중 하나라도 같은지 판단
logical # TRUE
logical <- num1 >= 50 # 관계식 판단
logical # TRUE
logical <- !(num1 >= 50) # 괄호 안의 관계식 판단 결과에 대한 부정
logical # FALSE
# 배타적 논리합
x <- TRUE; y <- FALSE
xor(x,y) # [1] TRUE
x <- TRUE; y <- TRUE
xor(x,y) # FALSE
# 제어문: 조건문과 반복문
# 1. 조건문 : if(조건식), ifelse(조건식),which(조건식)
# 1) if(조건식){실행문} else{실행문}
x <- 20
if(x >= 40){x = x *2
cat("x =", x)}
else {x = x +2
cat("x = ", x)}
# 2)if형식2 : 다중선택
score <- scan() #키보드 입력
if(score>=90){
cat('A학점 : ', score) #score = 95
}else if(score >= 80){
cat('B학점 : ', score) #score = 82
}else if(score >= 70){
cat('C학점 : ', score) #score = 79
}else{
cat('F학점 : ', score) #score = 65
}
#문1) 키보드로 입력한 점수가 짝수 or 홀수 인지 구분하기
socre
socre <- scan()
if(score %% 2 ==0){
cat('짝수:',score)
}else{
cat('홀수:',score)}
# 3) ifelse(조건식, 참, 거짓): 조건 + 반복(size) 기능
# vector 입력: -> ifelse() -> vector 출력
#합격 처리
score <- c(75,85,60,NA,55)
score
output<- ifelse(score >= 70,'합격','불합격')
output
# 결측치 처리 : 0 대체, 평균 대체
na_re <- ifelse(is.na(score),0, score)
na_re #75 85 60 0 55
mean(score,na.rm = T)
na_re2 <- ifelse(is.na(score),mean(score,na.rm = T), score)
na_re2
getwd()
setwd( "C:/ITWILL/3_Rwork/data")
excle <- read.csv('excel.csv')
str(excle)
q3 <- excle$q3
length(q3) #402
range(q3) #1 5
result<-ifelse(q3 >= 3, '큰 값', '작은 값')
table(result)
# 작은 값 큰 값
# 77 325
# 4) which(조건식): 값의 위치(index) 반환
#[1]벡터대상
x <- c(2,5,10,30:50)
length(x) #24
idx <- which(x == 39)
idx
x[idx] #39
# [2]데이터프레임에서 사용 예
no <- c(1:5)
name <-c("홍길동","이순신","강감찬","유관순","김유신")
score <- c(85,78,89,90,74)
exam <- data.frame(학번=no,이름=name,성적=score)
exam
idx<-which(exam$이름=="유관순") # [1] 4, 없으면 0
exam[idx,]
#4 4 유관순 90
# 2. 반복분 : for(변수 in 값), while(조건식)
# 1) for(변수 in 값){실행문}
num <- 1:10
num
#벡터형 변수 선언
d <- c() #빈 벡터 : d <-v^2
d
for (v in num) {
cat('v =',v,'\n')
d<- c(d,v^2) # 벡터변수 저장
}
d
# v: 스칼라(scala), num: 벡터(vector)
# 스칼라: 1개 원소
# 벡터 : 2개 이상 원소
cat('d=',d)
# d= 1 4 9 16 25 36 49 64 81 100
# 문2) num을 대상으로 홀수 또는 짝수를 저장하는 벡터 변수 만들기
for (re_num in num) {
if(v %% 2 == 0){
re_num <- c(re_num,'짝수')}
else{
re_num <- c(re_num,'홀수')
}
}
re_num<- c(1:10)
re_num
cat('re_num:',re_num)
# 짝수/홀수 합
even <- 0 # 짝수 합
odd <- 0 # 홀수 합
for (v in num) {
if(v %% 2 == 0){
even <- even + v
}else{
odd <- odd+v
}
}
cat('even=',even,'odd=',odd )
# while(조건){표현식}
i = 0
while (i <10) {
i <- i +1 #카운터 변수
print(i) #1~10 까지 출력됨
}
# 문3) while문으로 x의 각 변량에 짝수만 y에 저장하기
x <- 1:1000
x
y <- c() #벡터형 변수 선언
#while문 예
while (i < length(x)){ #x 크기 만큼 반복
i <- i+1 # 카운터 변수
#반복변수를 색인으로 이용
if(x[i] %% 2 ==0){
y<- c(y,x[i])
}
}
cat('y =',y)
# for문 예
for (v in x) {
if(v%% 2==0){
y <- c(y,v)
}
}
cat('y=',y)
'아이티월 수업일지(R)' 카테고리의 다른 글
22-08-08 chap05_DataVisualization (0) | 2022.08.09 |
---|---|
22-08-08 chap04_2_Function (0) | 2022.08.08 |
22-08-04 chap3_DataIO_String (0) | 2022.08.05 |
22-08-04 R프로그램 #chap_2 DataStructure (0) | 2022.08.04 |
22-8-03 R 프로그램 # chap01_Basic (0) | 2022.08.03 |