ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R기초] 데이터 단위 위계 한 방 정리(스칼라, 벡터, 요인, 행렬, 배열, 데이터프레임, 리스트)
    R 통계/R 기초 2021. 9. 11. 07:22
    728x90

    R에서 사용되는 데이터 형태가 다양했지만, 머릿속에 혼재되어있었다.

    개별적인 의미를 정리한 블로그는 많았지만,

    이들을 구조화하고 차이를 발힌 글은 잘 보지 못했다.

     

    각각의 내용의 차이점을 요약하면 다음과 같았다.

     

    요약

    > 각 데이터 단위의 위계를 정리하면 다음과 같다.

    데이터 구조 위계 (https://kaestory.tistory.com/)

    1. 스칼라 (Scalar)

    > 하나의 값으로 대부분 언어에서의 가장 최소 단위

    > 통계 분석이 목적인 R에서는 스칼라 개념을 사용하지 않으며, 벡터를 최소단위로 계산한다.

    > 아래의 예시에서, 1이라는 하나의 Scalar) 값도 R에서는 하나의 벡터(Vector)로 인식함을 알 수 있다.

    <입력>
    is(1)
    
    <출력>
    [1] "numeric" "vector"

     

    2. 벡터 (Vetcor)

    > R에서 사용되는 기본 단위로, 1차원 자료구조로, 동일한 자료형으로 구성되어야 한다.

    > 아래의 예시에서, 백터 내에, 수치형, 문자형, 논리형을 같이 넣자, 모두 "문자형" 벡터로 변환되었다.

    <입력>
    Vector_A <- c(1, 2, "가", T)
    is(Vector_A)
    
    <출력>
    [1] "character"           "vector"              "data.frameRowLabels"
    [4] "SuperClassMethod"

     

    3. 요인(Factor)

    > 백터와 유사하나, 범주 구분을 위해 사용되는 좀 더 특수한 개념으로 볼 수 있다.

    > 아래의 예시에서 A를 요인으로 변환할 수 있었으며, 요인도 여전히 벡터도 될 수 있음을 알 수 있다.

    <입력1>
    A <- c(1,2,1,1,2,1,2)
    is(A)
    
    <출력1>
    [1] "numeric" "vector"
    
    <입력2>
    A <- factor(A, levels = c(1,2), labels = c("남","여"))
    is(A)
    
    <출력2>
    [1] "factor"              "integer"             "oldClass"           
    [4] "double"              "numeric"             "vector"             
    [7] "data.frameRowLabels"

    4. 행렬 (Matrix)

    > 2개 이상의 벡터가 행열 형태로 쌓인것으로 각 행열의 자료형은 동일해야한다.

    > rbind: 벡터를 행(Row) 방향으로 묶어줌

    > cbind: 벡터를 열(Column) 방향으로 묶어줌

    > 아래 예시에서, 자료형은 행렬이자 배열(행렬을 포함하는 개념)이자, 벡터가 된다.

    <입력1>
    A <-c(1, 2, 3, 4, 5)
    B <-c(2, 4, 6, 8, 10)
    
    R <- rbind(A,B)
    C <- cbind(A,B)
    
    print(R)
    is(R)
    
    <출력1>
      [,1] [,2] [,3] [,4] [,5]
    A    1    2    3    4    5
    B    2    4    6    8   10
    [1] "matrix"    "array"     "structure" "vector"
    
    <입력2>
    print(C)
    is(C)
    
    <출력2>
         A  B
    [1,] 1  2
    [2,] 2  4
    [3,] 3  6
    [4,] 4  8
    [5,] 5 10
    [1] "matrix"    "array"     "structure" "vector"

     

    5. 배열 (Array)

    > 행렬이 2차원(행x열)만 표현하였다면, 배열은 3차원 이상의 자료형을 나타내는 자료 구조이다.

    > 행렬과 마찬가지로, 동일한 자료형끼리만 뭉칠 수 있다.

    > 앞서 사용한 예시를 활용해 아래와 같이 배열을 만들어 보았다.

    <입력>
    A <-c(1, 2, 3, 4, 5)
    B <-c(2, 4, 6, 8, 10)
    
    R <- rbind(A,B)
    C <- cbind(A,B)
    
    New <- array(c(R, C))
    print(New)
    is(New)
    
    <출력>
    [1]  1  2  2  4  3  6  4  8  5 10  1  2  3  4  5  2  4  6  8 10
    [1] "array"     "structure" "vector"

     

    6. 데이터 프레임 (Dataframe)

    > 2차원(행*열)로 구성되어 있으며, 자료형이 다른 벡터들을 한번에 묶을 수 있는 단위이다.

    > 엑셀과 유사한 형태로 분석에서 가장 많이 사용되는 형태이다.

    <입력>
    gender <- c(1,2,1,2,1,2)
    height <- c(170, 165, 182, 173, 160, 159)
    
    height_by_gender <- data.frame(cbind(gender, height))
    View(height_by_gender)
    is(height_by_gender)
    
    <출력>
       gender   height
    1   1         170
    2   2         165
    3   1         182
    4   2         173
    5   1         160
    6   1         159
    [1] "data.frame" "list"       "oldClass"   "vector"

     

    7. 리스트 (List)

    > 상기 모든 자료형을 묶을 수 있는 데이터 단위이다.

    > 아래와 같이  데이터프레임과 같이 자료형이 달라도 자료형을 변환하지 않은 채 묶을 수 있다.

    <입력1>
    A <- c(1,2, "가")
    B <- list(1,2, "가")
    
    is(A)
    str(A)
    
    <출력1>
    [1] "character"           "vector"              "data.frameRowLabels"
    [4] "SuperClassMethod"  
    
    chr [1:3] "1" "2" "가"
    
    <입력2>
    is(B)
    str(B)
    
    <출력2>
    [1] "list"   "vector"
    
    List of 3
     $ : num 1
     $ : num 2
     $ : chr "가"

     

     

    참고자료: http://stanford.edu/~jgrimmer/RDataManagement.pdf

    728x90
Designed by Tistory.