ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024 ADsP 데이터분석 준전문가 시험공부 7일차/20
    자격증/ADsP 2024. 4. 25. 16:00
    728x90
    반응형

    [03과목-01장]

    01 R 기초

    1. R 설치 및 기본 사용법

    (1) R 설치

    ① 다양한 통계 분석 프로그램

    - SAS, SPASS, S-Link, R, Python

     

    ② 통계 및 데이터 분석 프로그램 R

    - R은 뉴질랜드 통계학자인 로스 아하카와 캐나타 통계학자인 로버트 젠틀맨에 의하여 1995년에 제작된 언어

     

    ***설치 생략***

    2. R 기본 문법

    (1) 연산자

    ① 대입 연산자

    대입 연산자 내용
    <-, <<-, = 오른쪽 값을 왼쪽에 대입
    ->, ->> 왼쪽 값을 오른쪽에 대입

     

    ② 비교 연산자

    비교 연산자 내용
    == 두 값이 같은지 비교
    <, > 초과, 미만을 비교
    != 두 값이 다른지를 비교
    <=, => 이상, 이하를 비교
    is.character 문자형인지 아닌지를 비교
    is.numeric 숫자형인지 아닌지를 비교
    is.logical 논리형인지 아닌지를 비교
    is.na NA인지 아닌지를 비교
    is.null NULL인지 아닌지를 비교

     

    ③ 산술 연산자

    산술 연산자 내용
    + 두 숫자의 덧셈
    - 두 숫자의 뺄셈
    * 두 숫자의 곱셈
    / 두 숫자의 나눗셈
    %/% 두 숫자의 나눗셈의 몫
    %% 두 숫자의 나눗셈의 나머지
    ^, ** 거듭제곱
    exp() 자연상수의 거듭제곱

     

    ④ 기타 연산자

    기타 연산자 내용
    ! 부정 연산자
    & AND 연산자
    | OR 연산

     

    (2) R 데이터 구조

    ① 벡터

    : 타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조

    > v4 <- c(3, TRUE, FALSE)
    > v4
    [1] 3 1 0 #출력값
    
    > v1 <- C(1 : 6)
    > v1
    [1] 1 2 3 4 5 6 #출력값

     

    ② 행렬

    : 2차원 구조를 가진 벡터. 행렬에 저장된 모든 데이터는 같은 타입(아니면 자동으로 변환)

    > m1 <- matrix( c(1 : 6), nrow = 2)
    > m1
        [,1] [,2] [,3]
    [,1]   1    3	 5
    [,2]   2    4    6
    
    > m2 <- matrix( c(1 : 6), ncol = 2)
    > m2
        [,1] [,2] 
    [,1]   1    4
    [,2]   2    5    
    [,3]   3    6

     

    - matrix를 사용하여 행렬을 만들 경우 행렬의 값들이 열로 저장. byrow 옵션에 True 설정하면 행으로 저장

    > m3 <- matrix( c(1 : 6), nrow = 2, byrow = T)
    > m3
        [,1] [,2] [,3]
    [,1]   1    2	 3
    [,2]   4    5    6

     

    - dim 함수 사용 시 행의 개수와 열의 개수를 지정하여 행렬로 변환 가능

    > v1 <- c(1 : 6)
    > dim(v1) <- c(2, 3)
    > v1
        [,1] [,2] [,3]
    [,1]   1    3	 5
    [,2]   2    4    6

     

    ③ 배열

    : 3차원 이상의 구조를 갖는 벡터. (모두 같은 타입)

    - array를 사용하여 배열을 만들 수 있으나 몇 차원의 구조를 갖는지 dim 옵션에 명시해야 함

    > a1 <- array(c(1 : 12), dim = c(2, 3, 2))
    > a1
    , , 1
        [,1] [,2] [,3]
    [,1]   1    3	 5
    [,2]   2    4    6
    , , 2
        [,1] [,2] [,3]
    [,1]   7    9	11
    [,2]   8   10   12

    - 벡터에 차원 지정

    > a2 <- c(1 : 12)
    [1] 1 2 3 4 5 6 7 8 9 10 11 12
    > dim(a2) <- c(2, 3, 2)

     

    ④ 리스트

    : 데이터 타입, 데이터 구조에 상관없이 사용자가 원하는 모든 것을 저장할 수 있는 자료구조

    > L <- list()
    > L[[1]] <- 5
    > L[[2]] <- c(1 : 6)
    > L[[3]] <- matrix(c(1 : 6), nrow = 2)
    > L[[4]] <- array(c(1 : 6), dim = c(2, 3, 2))
    > L
    
    #출력값
    [[1]]
    [1] 5
    
    [[2]]
    [1] 1 2 3 4 5 6
    
    [[3]]
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
    
    [[4]]
    , , 1
    
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
    
    , , 2
    
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6

     

    ⑤ 데이터프레임

    : 데이터 분석을 위한 2차원 구조를 갖는 관계형 데이터 구조. 가장 많이 활용되는 구조 (서로 다른 타입 가능)

    > v1 <- c(1, 2, 3)
    > v2 <- c('a', 'b', 'c')
    > df1 <- data.frame(v1, v2)
    > df1
    
      v1 v2
    1  1  a
    2  2  b
    3  3  c

     

    + 파이썬, 자바, C 등 많은 언어는 배열의 시작 인덱스 값이 0이지만, R의 벡터는 시작 인덱스 값이 1

     

    (3) R 내장 함수

    ① 기본 함수

    함수 내용 함수 내용
    help() 또는 ? 함수들의 도움말 보기 rm() 대입 연산자에 의해 생성된 변수 삭제
    paste() 문자열을 이어 붙임 ls() 현재 생성된 변수들의 리스트 보여줌
    seq() 시작값, 끝값, 간격으로 수열 생성 print() 값을 콘솔창에 출력
    rep() 주어진 데이터를 일정 횟수만큼 반복  
    > help(paste)
    > ?paste
    
    > paste("This is", "a pen")
    [1] "This is a pen"
    
    > seq(1, 10, 2)
    [1] 1 3 5 7 9
    
    > rep(1, 5)
    [1] 1 1 1 1 1
    
    > a <- 1
    > a
    [1] 1
    > rm(a)
    > a
    Error: object 'a' not found
    
    print(10)
    [1] 10

     

    ② 통계 함수

    함수 내용 예시
    sum 입력된 값의 합을 구한다. sum(vector1)
    mean 입력된 값의 평균을 구한다. mean(vector1)
    median 입력된 값의 중앙값을 구한다. median(vector1)
    var 입력된 값의 표본 분산을 구한다. var(vector1)
    sd 입력된 값의 표본 표준편차를 구한다. sd(vector1)
    max 입력된 값의 최댓값을 구한다. max(vector1)
    min 입력된 값의 최솟값을 구한다. min(vector1)
    range 입력된 값의 최댓값과 최솟값을 구한다. range(vector1)
    summary 입력된 값의 요약값을 구한다. summary(vector1)
    skewness 입력된 값의 왜도을 구한다. skewness(vector1)
    kurtosis 입력된 값의 첨도을 구한다. kurtosis(vector1)

     

    (4) R 데이터 핸들링

    ① 데이터 이름 변경

    - 행렬, 배열, 데이터프레임과 같이 2차원 이상의 데이터 구조에서 가능

    > m1 <- matrix(c(1 : 6), nrow = 2)
    > colnames(m1) <- c('c1', 'c2', 'c3')
    > rownames(m1) <- c('r1', 'r2')
    > m1
    
       c1 c2 c3
    r1  1  3  5
    r2  2  4  6

     

    ② 데이터 추출

    > v1 <- c(3, 6, 9, 12)
    > v1[2]
    [1] 6
    
    > m1 <- matrix(c(1 : 6), nrow = 3)
    > m1[2, 2]
    [1] 5
    
    > colnames(m1) <- c('c1', 'c2')
    > m1[, 'c1']
    [1] 1 2 3
    
    > rownames(m1) <- c('r1', 'r2', 'r3')
    > m1['r3', 'c2']
    [1] 6
    
    > v1 <- c(1:6)
    > v2 <- c(7:12)
    > df1 <- data.frame(v1, v2)
    > df1$v1
    [1] 1 2 3 4 5 6
    > df1$v2[3]
    [1] 9

     

    ③ 데이터 결합

    - 벡터, 행렬, 데이터프레임 결합가능

    - rbind : 행으로 결합

    - cbind : 열로 결합

     

    (5) 제어문

    ① 반복문

    - for문과 while문

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

    - 파이썬이랑 거의 비슷

     

    ② 조건문

    if (조건문) {
    	print('조건 만족 시 출력 내용')
    } else{
    	print('조건 불만족 시 출력 내용')
    }

     

    ③ 사용자 정의 함수

    - 자주 사용되는 구문을 필요할 때마다 작성하지 않고 하나의 함수로 명명하여 필요할 때 사용

     

    ④ 주석

    - #으로 표시

     

    (6) 통계분석에 자주 사용되는 R 함수

    ① 숫자 연산

    함수 내용
    sqrt 주어진 수의 제곱근을 구한다.
    abs 주어진 수의 절댓값을 구한다.
    exp 자연상수 e의 제곱수를 구한다.
    log 밑이 자연상수인 로그 값을 구한다.
    log10 밑이 10인 로그 값을 구한다.
    pi 원주율을 의미하는 pi 값인 3.141592를 나타낸다.
    round 주어진 수의 반올림 값을 구한다.
    ceiling 주어진 수를 올림한다.
    floor 주어진 수를 내림한다.

     

    ② 문자 연산

    함수 내용
    tolower 주어진 문자열을 소문자로 바꾼다.
    toupper 주어진 문자열을 대문자로 바꾼다.
    nchar 주어진 문자열의 길이를 구한다.
    substr 문자열의 일부분을 추출한다.
    strsplit 문자열을 구분자로 나누어 쪼갠다.
    grepl 문자열에 주어진 문자가 있는지 확인한다.
    gsub 문자열의 일부분을 다른 문자로 대체한다.

     

    ③ 벡터 연산

    함수 내용
    length 주어진 벡터의 길이를 구한다.
    paste 주어진 벡터를 구분자를 기준으로 결합한다.
    cov 두 수치 벡터의 공분산을 구한다.
    cor 두 수치 벡터의 상관계수를 구한다.
    table 데이터의 개수들을 구한다.
    order 벡터의 순서를 구한다.

     

    ④ 행렬 연산

    함수 내용
    t 전치행렬을 구한다.
    diag 대각행렬을 구한다.
    %*% 두 행렬을 곱한다.

     

    ⑤ 데이터 탐색

    함수 내용
    head 데이터의 앞 일부분을 보여준다.
    tail 데이터의 뒤 일부분을 보여준다.
    quantile 수치 벡터의 4분위수를 보여준다.

     

    ⑥ 데이터 전처리

    함수 내용
    subset 데이터에서 조건식에 맞는 데이터를 추출
    merge 두 데이터를 특정 공통된 열을 기준으로 병합
    apply 데이터에 열(또는 행)별로 주어진 함수를 적용

     

    ⑦ 정규분포(기본값은 표준 정규 분포로 mean = 0, sd = 1이다)

    함수 내용
    dnorm 정규 분포의 주어진 값에서 함수 값을 구한다.
    rnorm 정규 분포에서 주어진 개수만큼 표본을 추출한다.
    pnorm 정규분포에서 주어진 값보다 작을 확률 값을 구한다.
    qnorm 정규 분포에서 주어진 넓이 값을 갖는 x값을 구한다.

     

    ⑧ 표본추출

    함수 내용
    runif 균일 분포에서 주어진 개수만큼 표본을 추출한다.
    sample 주어진 데이터에서 주어진 개수만큼 표본을 추출한다.

     

    ⑨ 날짜

    함수 내용
    Sys.Date 연, 월, 일을 출력
    Sys.time 연, 월, 일, 시간을 출력
    as.Date 주어진 데이터를 날짜 형식으로 변환
    format 원하는 날짜 형식으로 변경
    as.POSIXct 타임스탬프를 날짜 및 시간으로 변환

     

    ⑩ 산점도

    함수 내용
    plot 주어진 데이터의 산점도를 그린다.
    abline 산점도에 추가 직선을 그린다.

     

    ⑪ 파일 읽기 쓰기

    함수 내용
    read.csv csv 파일을 불러온다.
    write.csv 주어진 데이터를 csv 파일로 저장한다.
    saveRDS 분석 모델 및 R 파일을 저장한다.
    readRDS 분석 모델 및 R 파일을 불러온다.

     

    ⑫ 기타

    함수 내용
    install.packages 패키치를 설치한다.
    library 설치된 패키지를 호출한다.
    getwd 작업 디렉터리를 확인한다.
    setwd 작업 디렉터리를 설정한다.

     

    728x90
    반응형
Designed by Tistory.