R의 데이터 프레임

빅데이터/R 2018. 12. 10. 14:52

R의 데이터 프레임



1. 데이터 프레임의 개념

데이터 프레임(data frame)은 R의 대표적인 데이터 형태입니다. 2차원 구조로 행렬처럼 행과 열로 구성되어 있으며, 행렬은 하나의 데이터 유형만 가질 수 있지만 데이터 프레임은 여러 가지 데이터 유형을 가질 수 있습니다. 일반적으로 R에서는 데이터를 분석할 때에는 데이터 프레임 형태로 되어 있어야 하지만 데이터 프레임에서 하나의 열은 벡터처럼 하나의 데이터 유형만 가집니다.


2. 데이터 프레임을 생성하는 방법

텍스트, CSV, 엑셀, DB 형태로 되어 있는 외부 데이터를 R에서 읽어오면 그 데이터 형태는 데이터 프레임이 됩니다. data.frame() 함수를 이용하여 데이터 프레임을 생성할 수 있습니다. argument stringsAsFactors(TRUE/FALSE)는 데이터의 유형이 문자형인 경우는 데이터 프레임을 생성할때 argument를 주지 않아도 기본적으로 TRUE값을 가지며 요인(factor)으로 변경됩니다. 이것을 원하지 않을 경우 FALSE값을 지정해주면 문자형 그대로 유지가 됩니다.

> id = 1:5
> age = c(2932473523)
> gender = c("f""m""m""f""f")
> height = c(163177172157169)
> DF1 = data.frame(id, age, gender, height)
> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> DF2 = data.frame(id, age, gender, height, stringsAsFactors = FALSE)
> DF2
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
cs


5명에 대한 나이, 성별, 키를 조사하여 age, gender, height라는 벡터에 저장하고, 이 벡터들을 data.frame() 함수를 이용하여 하나의 데이터 프레임으로 만들었습니다. stringsAsFactors값을 FALSE로 줬기 때문에 factor가 아닌 벡터로 생성됩니다.


> str(DF1)
'data.frame':    5 obs. of  4 variables:
 $ id    : int  1 2 3 4 5
 $ age   : num  29 32 47 35 23
 $ gender: Factor w/ 2 levels "f","m"1 2 2 1 1   # factor로 생성되어 범주형 자료임을 확인
 $ height: num  163 177 172 157 169
> str(DF2)
'data.frame':    5 obs. of  4 variables:
 $ id    : int  1 2 3 4 5
 $ age   : num  29 32 47 35 23
 $ gender: chr  "f" "m" "m" "f" ...   # stringsAsFactors=FALSE로 줬기 때문에 문자형 그대로 
 $ height: num  163 177 172 157 169
cs


str() 함수를 사용하면 지정된 데이터가 어떠한 구조로 형성되어 있는지 알 수가 있습니다. 데이터의 구조로 데이터의 형태, 행의 개수, 열의 개수, 변수명, 데이터의 유형 등을 알려줍니다.


3. 데이터 프레임의 속성

1) 행의 개수 : nrow(), NROW()

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> nrow(DF1)
[15
> NROW(DF1)
[15
cs


2) 열의 개수 : ncol(), NCOL()

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> ncol(DF1)
[14
> NCOL(DF1)
[14
cs


3) 행의 이름 : rownames()

기본적으로 행의 이름은 문자형이며 1부터 시작하는 일련번호로 되어 있습니다.

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> rownames(DF1)
[1"1" "2" "3" "4" "5"
cs


※ 행의 이름을 paste() 함수를 이용하여 아래와 같이 쉽게 수정할 수 있습니다.

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
 
> rownames(DF1) = paste("R"1:5, sep="")   # 행이름을 R1 ~ R5로 
> DF1
   id age gender height
R1  1  29      f    163
R2  2  32      m    177
R3  3  47      m    172
R4  4  35      f    157
R5  5  23      f    169
> rownames(DF1)
[1"R1" "R2" "R3" "R4" "R5"
cs


4) 열의 이름 : colnames()

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> colnames(DF1)
[1"id"     "age"    "gender" "height"
cs


5) 차원 : dim()

차원(dimension)은 행과 열이 몇 개로 구성되어 있는지를 의미합니다. dim() 함수를 사용해서 알아낼 수 있으며, 첫 번째 나오는 숫자가 행의 개수, 두 번째로 나오는 숫자가 열의 개수를 의미합니다. 

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> dim(DF1)
[15 4
cs


6) 차원의 이름 : dimnames()

차원의 이름은 행의 이름과 열의 이름을 의미합니다. dimnames() 함수를 사용하면 행과 열의 이름을 한번에 알려주는데, 첫 번째로 나오는 이름이 행의 이름이고 두 번째로 나오는 이름이 열의 이름을 의미합니다. 차원의 이름은 리스트(list) 형태로 되어 있습니다.

> DF1
  id age gender height
1  1  29      f    163
2  2  32      m    177
3  3  47      m    172
4  4  35      f    157
5  5  23      f    169
> dimnames(DF1)
[[1]]
[1"1" "2" "3" "4" "5"
 
[[2]]
[1"id"     "age"    "gender" "height"
cs




※ 이전글

R의 배열과 리스트


※ 다음글

R의 패키지


'빅데이터 > R' 카테고리의 다른 글

R의 패키지  (5) 2018.12.10
R의 배열과 리스트  (0) 2018.12.10
R의 요인과 행렬  (0) 2018.12.09
R의 벡터 속성  (0) 2018.12.09
R에서 백터 생성 하기  (0) 2018.12.09