정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : apply 시리즈

    • 작성자     : 박진만

    • 작성일     : 2020-03-28

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

    • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

    • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

    • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

    • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

     

     

    [특징]

    • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    • apply 함수 계열에는 apply 외에 tapply mapply lapply sapply 등이있다. 

    • 일반적인 사용 방법은 행렬 또는 목록에 대해 일괄적 연산 기능이다.

    • 본 글에서는 apply, lapply, sapply 의 사용법에 대해 다루고자 한다.

    함수 기능
    apply (x, i, f) 행렬 데이터 프레임 (x)에 대해 각 행 (i = 1) 또는 각 열 (i = 2) 각 연산 (f)를 실시한다.
    lapply (x, f) 목록 (x)의 각 요소에 대해 연산 (f)를 실시한다. 실행 결과를 목록 형식으로 반환한다
    sapply (x, f) 목록 (x)의 각 요소에 대해 연산 (f)를 실시한다. 실행 결과를 벡터 형식으로 반환한다.

     

    [apply 함수의 기본적인 사용법]

    • 행렬 형 또는 데이터 프레임 형식의 데이터에 대해 각 행 또는 각 열에 대해 유사한 연산을 일괄 할 때 apply를 이용한다. 

    • apply의 첫 번째 인수는 데이터를 대입한다. 두 번째 인수는 1 또는 2를 대입한다. 여기서 1은 행을 의미하고 2는 각 열을 의미한다. 그리고 세 번째 인수는 적용 할 연산 (함수 이름)을 준다.

    x <- matrix(c(12.1, 3.44, 0.1, 3, 12, 33.1, 1.1, 23), nrow = 2)
    
    x
    ##       [,1] [,2] [,3] [,4]
    ## [1,] 12.10  0.1 12.0  1.1
    ## [2,]  3.44  3.0 33.1 23.0
    
    
    # calculate totals
    apply(x, 1, sum)
    ## [1] 25.30 62.54
    
    # calculate averages
    apply(x, 2, mean)
    ## [1]  7.77  1.55 22.55 12.05

     

    • 위에서 사용하는 sum 및 mean 등의 함수는 R에서 표준 구현되는 함수이다.

    • 그러나 이러한 표준함수 이외에도 이를 사용자 함수로 대체 할 수있다. 

    • 예를 들어, 아래의 코드를 본다면  기존의 i 자리에 각 행의 데이터가 할당되는 사용자 함수를 사용한 것을 볼 수 있다.

    x <- matrix(c(12.1, 3.44, 0.1, 3, 12, 33.1, 1.1, 23), nrow = 2)
    
    # get the maximum numbers from each row
    M <- apply(x, 1, function(y) {
        # `y` contains data of the each row of `x`
        m <- max(y)
        return(m)
      }
    )
    ## [1] 12.1 33.1
    
    
    # use for-loop instead of apply function
    M <- NULL
    for (j in 1:nrow(x)) {
      y <- x[j, ]
      m <- max(y)
      M <- c(M, m)
    }
    M
    ## [1] 12.1 33.1

     

    [apply 함수에 인수를 주는 방법]

    • apply에 사용자 함수를 적용하고 싶다면, 때로는 외부에서 인수를 주어야 할 필요가 있다.

    • 일반적으로 apply함수는 3 개의 인수를 받지만, 4 번째 이후에 할당 된 인수는 자동으로 3 번째로 지정된 함수에 전달되게 된다.

    x <- c(1, 3, 5, 7)
    y <- c(2, 4, 6, 8)
    
    mat <- matrix(1:10, ncol = 2)
    
    d <- apply(mat, 1, function(i, px = x, py = y) {
      a <- i[1] + 2 * i[2]
      # `px` is `x` in this apply function.
      # `py` is `y` in this apply function.
      b <- mean(px) * mean(py)
      return(c(a, b))
    }, x, y)
    
    d
    ##      [,1] [,2] [,3] [,4] [,5]
    ## [1,]   13   16   19   22   25
    ## [2,]   20   20   20   20   20

     

    [lapply]

    • lapply 는 리스트 형식에 대해 뭔가를 일괄 연산 할 때 이용한다.

    • 리스트 형의 데이터는 1, 2 ...처럼 번호가 부여되므로 행렬처럼 행 또는 열을 지정하지 않는다.

    • 따라서 lapply에 들어가는 인수는 입력 데이터와 연산을 수행하는 함수 두 가지 뿐이다.

    x <- list(1:10,11:20,21:30)
    x
    ## [[1]]
    ##  [1]  1  2  3  4  5  6  7  8  9 10
    ## [[2]]
    ##  [1] 11 12 13 14 15 16 17 18 19 20
    ## [[3]]
    ##  [1] 21 22 23 24 25 26 27 28 29 30
    
    lapply(x,sum)
    ## [[1]]
    ## [1] 55
    ## [[2]]
    ## [1] 155
    ## [[3]]
    ## [1] 255
    

     

    [sapply]

    • lapply같은 방법을 사용하며, 같은 기능을 가진다. 그러나 lapply는 리스트로 리턴 되는것에 반해, sapply는 벡터형으로 반환이 된다.

    x <- list(1:10,11:20,21:30)
    
    lapply(x, sum) 
    ## [[1]]
    ## [1] 55
    ## 
    ## [[2]]
    ## [1] 155
    ## 
    ## [[3]]
    ## [1] 255
    
    
    sapply(x, sum) 
    ## [1]  55 155 255
    
    
    as.numeric(lapply(x, sum))
    ## [1]  55 155 255

     

    [다음글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 시계열

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 시계열 작성자 : 박진만 작성일 : 2020-03-28 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

    shlee1990.tistory.com

     

    [이전글]

     

    R을 이용한 통계 분석 및 데이터 시각화 : 패키지

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 패키지 작성자 : 박진만 작성일 : 2020-03-27 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

    shlee1990.tistory.com

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기