본문 바로가기
데이터분석/ADP

PART04.2장 R 프로그래밍 기초

by Mr.꾸 2022. 6. 3.
반응형

PART04.2장 R 프로그래밍 기초


R이란?


  • 통계, 데이터 마이닝 언어
  • 각 세션 사이마다 시스템에 데이터 셋 저장, 매번 데이터를 로딩할 필요가 없고 명령어 스토리도 저장 가능
  • 객체지향 언어이며 함수형 언어
  • R스튜디오
    • 래틀은 GUI 가 패키지가 긴밀한 결합, 정해진 기능만 사용 가능해 업그레이드가 제대로 되지 않으면 통합성에 문제

R설치


 

1. R install 먼저

https://cran.rstudio.com/

 

The Comprehensive R Archive Network

 

cran.rstudio.com

2. RStudio 설치

https://www.rstudio.com/products/rstudio/download/

 

Download the RStudio IDE

RStudio is a set of integrated tools designed to help you be more productive with R. It includes a console, syntax-highlighting editor that supports direct code execution, and a variety of robust tools for plotting, viewing history, debugging and managing

www.rstudio.com


R 기초-1


  • 패키지
    • R함수와 데이터 및 컴파일된 코드의 모임, 라이브러리 집합
    • 패키지 Load
      1. 하드디스크에서 직접
      2. 웹에서 설치
        - install.packages("패키지명")
      3. 도움말
        - library(help=package명)
        - help(package=package명)
    • 라이브러리 로드
      1. library(package명)
  • 프로그램 파일 실행
    • 프로그래밍된 파일 실행 : source("파일명")
    • 프로그램 파일
      1. sink(file, append, split)
        - file : 출력 파일명
        - append : 추가 여부
        - split : 출력 파일에만 출력하거나 콘솔 창에 출력
      2. pdf() : 그래픽 출력을 pdf로 지정

      3. dev.off()로 파일 닫기
  • 배치 모드 기능
    • 배치모드 : 사용자와 인터액션이 필요하지 않은 방식, 프로세스 자동화에 유용
    • 배치파일 실행 명령
      1. $R CMD BATCH batch.R(윈도우 CMD)
    • Path 지정 : 속성 -> 고급 시스템 설정-> 환경변수 클릭 -> 변수명 Path -> R 실행파일 위치 추가
  • 장점
    • 오픈소스로 최신 알고리즘 활용이 쉬움
    • 함수형 언어이기에 자동화 가능
    • 무료
  • 단점
    • 오픈소스라 신속한 유지보수는 어려움
      1. 문제를 해결할 때 많은 노력 필요

R 기초-2


▶ 기초

기능 R코드 비고
출력하기 - print() : 출력형식 지정할 필요 없음
             한번에 하나의 객체만 출력
- cat() : 여러항목을 묶어서 출력
           복합적 데이터 구조 처리 불가
 
대입연산자 <-, <<-, =, ->  
변수 목록보기 ls(), ls.str()  
변수 삭제 rm() rm(list=ls())
모든변수 삭제
벡터 생성 c() 원소 중 하나라도 문자가 있으면 모든 원소는 문자형태
R함수 정의 function(매개변수..){expr~} <expr>
지역변수 : 해당 스콥에만 존재
조건부 실행 : if
반복실행 : for, while, repeat
전역변수 : <<- 로 설정은 가능, 비추
용어 Inf : 무한대
NaN : Not a Number
dim : 행렬의 차원
NA : 결측치
 
 "+"(2,3) # 더하기 기능을 하네
[1] 5

"+"(2,3,4) # 2개만 됨
Error in `+`(2, 3, 4) : operator needs one or two arguments

▶ R프로그램 소개

기능 R코드 비고
데이터 할당 a<-1 , a=1  
결합 x <- c(1,2,3,4) 문자, 숫자, 논리값, 변수 결합 가능
벡터와 데이터 셋 생성
수열 1:5
9:-2
seq(from=0, to=20, by=2)
seq(from=0, to=20, length.out=5)
시작값에서 최종값까지 연속된 숫자 생성
by로 간격
length.out을 결과값 길이 설정
반복 rep(1, time=5)
rep(1:4, each=2)
rep(c, each=2)
time 인자에 지정한 횟수만큼 반복
time 은 전체를 time 횟수만큼 반복
each는 각각 each 횟수만큼 반복
문자 붙이기 A <- paste("a","b","c", sep="-")
paste(A, c("e","f")
paste(A, 0, sep="")
sep 연결 구분자 지정
벡터 원소 선택 V[n]: 선택
V[-n]:제외
n은 원소 자릿수
V는 벡터 명

▶ 벡터의 연산

연산자 표현 방법
$ 요소 뽑아내기, 슬롯 뽑아내기 a$coef
%any% 특수연산자 %/% : 나눗셈몫
%% : 나눗셈 나머지
%*% : 행렬 곱
& 논리 and TRUE&TRUE
~ 식(formula) lm(log(brain)~log(body), data=Animals)
> c(2,4,6,8)+c(1,3,5,7)
[1]  3  7 11 15

c(2,4,6,8)+c(1,3,5,7,9) # 더해지는 벡터의 인자수가 같아야 함.
[1]  3  7 11 15 11
Warning message:
In c(2, 4, 6, 8) + c(1, 3, 5, 7, 9) :
  longer object length is not a multiple of shorter object length
>

▶ 벡터의 기초통계

기능 R 코드 비고
평균 mean na.rm 은 결측치를 제외하는 옵션
중앙값 median  
표준편차 sd stdev 는 R 명령어가 아님
분산 var  
공분산 cov  
상관계수 cor  
x<-c(1,2,3,NA)
> x
[1]  1  2  3 NA
> mean(x)
[1] NA
> mean(x, na.rm=T)
[1] 2
###### NA가 있는 경우 결측지 제거 옵션을 사용하지 않고서는 NA 결과가 나옴

▶ R에서 자주 하는 실수

기능 R 코드 비고
윈도우 경로 \(역슬래시)를 두번 쓰거나, /(슬러시를 한번 써야함)
여러줄을 넘어서 식을 이어갈때 > sum <- 1+2+3
> +4+5
[1] 9
>sum
[1] 6
 
1:(n+1), 1:n+1 > n<-5;
> 1:n+1;
[1] 6 7 8 9 10
> 1:(n+1)
[1] 1 2 3 4 5 6
 
패키지를 불러오고 library()나 require()를 수행할 것    
2번 써야할 것과 1번 써야할 것을 혼돈하지 말것 aList[[a]] vs aList[a]
&& vs &, || vs |
 

입력과 출력


  • 데이터 핸들링 : 입력된 데이터를 다양한 전처리 작업을 거쳐 분석이 가능한 형태로 재정리
기능 R 코드 비고
출력할 내용의 자리수 정의 R의 부동소수점 표현 : 7자리로 표시
print(pi, digits=num)
cat(format(pi, digits=num), "\n")
options(digits=num)
 
고정자리수 데이터 파일 읽기 read.fwf("파일이름", widths=c(w1, w2, ..)  
테이블로 된 데이터 파일 읽기 read.table("파일이름", sep="구분자") 1. 텍스트 데이터 옵션
▶ stringsAsFactor=F
2. 결측치 표현 옵션
▶ na.strings= "."
3. 헤더 표시 옵션
▶ header=T
CSV 데이터 읽기 read.csv("파일명") 1. 헤더 표시 옵션
▶ header=T
2. 텍스트 데이터 옵션
▶ as.is=T
CSV 데이터 쓰기 write.csv(변수, "파일명") 1. 헤더 표시 옵션
▶ col.names=T/F
2. 행번호 옵션
▶ row.names=T/F
혼합 lines <- readLines("test.txt", n=num)
token <- scan("test.txt", what=list(v1=character(0), v2=numeric(0), n=num, nlines=num)
what=numeric(0) : 숫자로 인식
        integer(0) : 정수
        complex(0) : 복소수
        character(0) : 문자
        logical(0) : 논리

데이터 구조


  • 벡터와 리스트
    • 벡터 : 모든 원소는 같은 자료형
      1. V[c(1,2)] : V벡터의 1번째, 2번째 원소로 구성된 벡터
      2. V[2] : V벡터의 2번째 원소
      3. 이름 지정 가능 : names(V) <- c("A", "B", "C")
    • 리스트 : 여러 자료형의 원소
      1. L[[2]] : L리스트의 2번째 원소
      2. L[c(1, 2)] : L리스트의 1, 2번째 원소를 갖는 리스트
      3. L[["A"]], L$A : A라는 이름을 같은 원소 지칭
  • 데이터 프레임
    • 데이터 프레임의 리스트 원소는 벡터 또는 factor
    • 각 열 별 다른 데이터 형식
  • 그 외
    • 스칼라(단일 값) : 원소가 하나인 벡터로 인식 ( eg. pi , length(pi)는 1)
    • 행렬 : 차원을 같은 벡터
    • 배열 : 행렬에 n차원까지 확장된 형태(벡터에 차원 부여)
    • 요인(Factor) : 벡터처럼 생겼지만, 고윳값의 정보를 얻어냄, 이 값들을 요인의 수준, 범주형 변수, 집단 분류
728x90

댓글