R언어에서 data를 다루는 방법에는 다음과 같은 방법이 있다.
- scalars
- vectors
- matrices
- data frames
- lists
본 글에서는 data frames의 사용에 대해 설명한다.
Data frames
기존 vector와 matrix는 같은 mode 의 element만으로 구성이 가능하다. 즉, numeric이면 numeric, character면 character, logical이면 logical로만 구성이 가능한 것이다. 하지만 데이터를 처리하다 보면 다양한 mode로 구성할 필요가 있는데 이 때 사용되는 것이 data frame이다.
기본적인 사용의 예)
> fruit = data.frame(species=c("apple","banana","melon"), + count=c(3,7,4), + color=c("red","yellow","green"), + avail=c(TRUE,FALSE,FALSE)) > fruit species count color avail 1 apple 3 red TRUE 2 banana 7 yellow FALSE 3 melon 4 green FALSE
위의 예와 같이 character vector, numeric vector, logical vector를 조합하여 하나의 data frame을 구성할 수 있다. 만약 하나의 mode(numeric, character, logical)로만 구성되어 있다면, matrix가 더욱 효율적일 것이다.
- data frame에의 접근
vector, matrix와 마찬가지로 data frame 에 접근한다.
앞어 정의한 fruit를 바탕으로 예를 들면 다음과 같다.
$를 이용해 column의 element를 구하는 예)
> fruit$species [1] apple banana melon Levels: apple banana melon
> fruit$count [1] 3 7 4
> fruit$color [1] red yellow green Levels: green red yellow
> fruit$avail [1] TRUE FALSE FALSE
구하고자 하는 column을 번호로 명기하여 구하는 예)
> fruit[,1] [1] apple banana melon Levels: apple banana melon
구하고자 하는 column을 name으로 명기하여 구하는 예)
> fruit[,"species"] [1] apple banana melon Levels: apple banana melon
- data frame에서 원하는 element 추출
> fruit[which.max(fruit$count),] species count color avail 2 banana 7 yellow FALSE
위의 예는 fruit의 count column 중 가장 큰 값을 가진 row를 표시한다.
> which.max(fruit$count) [1] 2
count column에서 가장 큰 값을 가지는 인덱스는 which.max function을 사용하여 구할 수 있다.
> subset(fruit,count>3) species count color avail 2 banana 7 yellow FALSE 3 melon 4 green FALSE
fruit 안에서 column 이 3 초과인 row를 표시한다.
> subset(fruit,select=species:color) species count color 1 apple 3 red 2 banana 7 yellow 3 melon 4 green
fruit 안에서 "species" 부터 "color" column 까지 부분을 표시한다.
> sort(fruit$count) [1] 3 4 7
count column내의 값을 정렬하여 표시한다.
> fruit[order(fruit$count),] species count color avail 1 apple 3 red TRUE 3 melon 4 green FALSE 2 banana 7 yellow FALSE
fruit 내 count column을 정렬하여 fruit 를 표시한다.
'Language > R' 카테고리의 다른 글
[01-3] R언어 - 학습의 구성 (0) | 2017.12.05 |
---|---|
[03-5] R언어 - array 의 상세 (0) | 2017.11.24 |
[02-1] R언어 - Assignment (할당) (0) | 2017.11.10 |
[03-1] R언어 - Object의 정의 및 종류 (0) | 2017.11.10 |
[03-4] R언어 - matrix 의 상세 (0) | 2017.11.08 |
[03-3] R언어 - vector 의 상세 (0) | 2017.11.08 |
[03-2] R언어 - type와 mode 차이의 이해 (0) | 2017.11.07 |
[04-1] R언어 - 관련 학습 문서 및 사이트 (0) | 2017.11.07 |