[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