[R] 데이터 프레임 다루기

반응형
    반응형

    R에서 가장 많이 쓰이게 되는 데이터 프레임(DataFrame) 내용입니다.

    일단 데이터 프레임은 벡터들로 이루어진 집합으로 볼 수 있습니다. 그런데 행과 열을 가지는 2차원 데이터 타입이고 다양한 형식을 한데 모아서 저장을 할 수 있습니다.
    행렬은 동일한 데이터 타입을 가져야만 생성이 되었지만 데이터프레임은 꼭 그렇지 않아도 됩니다.

     

    데이터프레임(data frame) 생성하기

    데이터 프레임은 다음과 같은 만들 수 있습니다.
    파라미터는 딱히 존재하지 않고 key-value형식으로 이름과 벡터를 매칭시켜주면 됩니다.

    data.frame(변수명1=벡터1,변수명=벡터2,...)

    >df = data.frame(col1=c(1,2,3,4),col2=c('a','b','c','d'))
    >df
      col1 col2
    1    1    a
    2    2    b
    3    3    c
    4    4    d

     

    데이터 구조를 한눈에 보려면 str()함수를 사용합니다.

    > str(df)
    'data.frame':    4 obs. of  2 variables:
     $ col1: num  1 2 3 4
     $ col2: chr  "a" "b" "c" "d"

     

    이미 벡터가 정의되어있는경우에는 변수명을 굳이 입력하지 않아도 됩니다.

    >StudentID = c(1:10)
    >gender = c('M','F','M','M','F','F','F','M','F','M')
    >paid = c(T,F,T,F,T,F,T,F,T,F)
    
    >df = data.frame(StudentID,gender,paid)
    >df
       StudentID gender  paid
    1          1      M  TRUE
    2          2      F FALSE
    3          3      M  TRUE
    4          4      M FALSE
    5          5      F  TRUE
    6          6      F FALSE
    7          7      F  TRUE
    8          8      M FALSE
    9          9      F  TRUE
    10        10      M FALSE

     

    데이터프레임 원소 불러오기

    데이터프레임에서 원소를 불러오려면 인덱스가 있으므로 인덱스를 기반으로 가져오면 됩니다.

    > df[1,2]
    [1] "M"
    
    > df[2,2:3]
      gender  paid
    2      F FALSE
    
    > df[2:3,2]
    [1] "F" "M"

    컬럼을 기준으로 가져오려면 [,인덱스값] 이나 직접 컬럼이름을 벡터형식으로 나열해 가져옵니다.

    > df[,2]
    [1] "M" "F" "M" "M" "F" "F" "F" "M" "F" "M"
    
    > df[,c('gender')]
    [1] "M" "F" "M" "M" "F" "F" "F" "M" "F" "M"

    행을 기준으로 한다면 [인덱스값,]으로 합니다.

    > df[2,]
     StudentID gender  paid
    2         2      F FALSE

     

    subset을 이용한 불러오기

    단순하게 행이나 열을 불러오는 방법은 위와 같이 하면 됩니다.
    하지만 필터링을 하는 논리 연산자를 쓰려면 subset을 이용해 불러올 수 있습니다.

    > subset(df,StudentID>4 & paid==T)
      StudentID gender paid
    5         5      F TRUE
    7         7      F TRUE
    9         9      F TRUE
    
    > subset(df,paid==T,select=c('gender'))
      gender
    1      M
    3      M
    5      F
    7      F
    9      F

     

    마치며

    간단하게 데이터 프레임 다루는 방법을 알아보았습니다.
    더 복잡한 작업은 dplyr로 주로 하게 될겁니다.

    관련 포스팅
    [R] 행렬(matrix) 다루기

    'R' 카테고리의 다른 글

    [R] 조건문 만들기(if, ifelse,switch)  (0) 2022.05.18
    [R] 데이터 결합하기  (0) 2022.05.13
    [R] 행렬(matrix) 다루기  (0) 2022.05.05
    [R] 리스트(list)  (0) 2022.05.03
    [R] 벡터 다루기(내장함수와 연산)  (0) 2022.04.28

    댓글

    Designed by JB FACTORY

    ....