본문 바로가기

CS/R | DA

R 파일 입출력, 조건문, 반복문, 사용자 정의 함수, 결측값 처리, 이상값

R

파일 읽기

-read.table() : 일반 텍스트 파일 읽을 때 사용
> students = read.table(".txt", header = T)
> students


# 읽은 파일의 구조 확인
> str(students)



-read.csv() : CSV 파일 읽을 때 사용
> students = read.csv(".txt", header = T)
> students

파일 쓰기

-write.table() : 일반 텍스트 파일로 저장할 때 사용
> students = read.table(".txt", header = T, as.is = T)

# 문자열에 큰따옴표 표시됨
> write.table(students, file = ".txt")

# 문자열에 큰따옴표 표시되지 않음
> write.table(students, file = ".txt", quote = F)

데이터 정제를 위한 조건문

@[ ]에 행/열 조건 명시
-벡터의 경우
> test = c(15, 20, 30, NA, 45) # 벡터인 경우
> test[test<40] # 값이 40 미만인 요소 추출


> test[test%%3!=0] # 값이 3으로 나누어 떨어지지 않는 요소 추출


> test[is.na(test)] # NA인 요소 추출



@if문 사용(if, else if, else)
다른 언어들과 같이 사용해주면 됨


@ifelse문 사용
-if와 else문을 합쳐놓은 형태
-사용법 : ifelse(조건식, 조건식이 참인 경우 반환값, 조건식이 거짓인 경우 반환값)

> x = c(-5 : 5)
> options(digits = 3) # 숫자 표현 시 유효자릿수 3자리로 설정
> sqrt(x)


> sqrt(ifelse(x>=0, x, NA) # NaN 발생하지 않게 음수만 NA로 표시


반복문

-데이터 검토 시 반복적으로 값 변경하면서 사용해야 하는 경우 존재
-R에서 제공하는 반복문은 repeat, while, for문

@repeat문 이용
-1부터 10까지 1씩 수 증가시키기

i=1 repeat { if(i>10) { break } else { print i i=i+1 } }



@for문 이용
-1부터 10까지 1씩 수 증가시키기

for(i in 1:10) { print(i) }



@while문 이용
-1부터 10까지 1씩 수 증가시키기

i=1 while(i<10) { print(i) i=i+1 }



@조건문과 반복문 활용해 특정 범위 내에서 조건에 맞는 값 찾기
-1부터 10까지의 수 중 작수만 출력하기

for(i in 1:10) { if(i%%2==0) { print(i) } }


-1부터 10까지의 수 중 소수 출력하기

for(i in 1:10) { check=0 for(j in 1:i) { if(i%%j==0) { check=chek+1 } } if(check==2) { print(i) } }


사용자 정의 함수

-팩토리얼 구하는 함수

fact=function(x) { fa = 1 while(x>1) { fa=fa*x x=x-1 } return(fa) }


결측값 처리

-우리가 수집한 데이터에는 결측값(missing value) 존재할 수 있음
-결측값 : 데이터 중 고의 또는 실수로 누락된 값
-결측값을 그대로 놔둔 채 데이터 가공하면 결과값에 오류 뜨거나 잘못된 연산 수행될 수 있으므로 정제과정에서 적절한 처리 필요

@결측값 처리 방법

방법 설명
is.na() NA인 데이터가 있으면 T, 없으면 F로 나타냄
na.omit() NA인 데이터 제거. 즉 NA가 포함된 행 지움
함수의 속성 이용 na.rm=T로 함수 수행 시, NA 제외함


이상값

-통계학에서 이상값이란 다른 관측값과 멀리 떨어진 관측값
-이상값을 모두 NA로 표현한다면 NA 관련 함수들을 사용할 수 있게 됨



Tiny Star