[03-8] R언어 - Data frame 의 상세

Language/R 2017.11.09 14:58 posted by TechNote.kr


R언어에서 data를 다루는 방법에는 다음과 같은 방법이 있다.



본 글에서는 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 를 표시한다.