Chapter 9 Data Frame
데이터프레임은 R에서 가장 널리 사용되는 형식으로써, 각 컬럼이 다른 클래스를 가질 수 있습니다.
9.1 데이터프레임 생성하기
df = data.frame (col1 = 1:3,
col2 = c ("this", "is", "text"),
col3 = c (TRUE, FALSE, TRUE),
col4 = c (2.5, 4.2, pi))
str(df)## 'data.frame': 3 obs. of 4 variables:
## $ col1: int 1 2 3
## $ col2: chr "this" "is" "text"
## $ col3: logi TRUE FALSE TRUE
## $ col4: num 2.5 4.2 3.14
col1은 숫자, col2는 팩터, col3는 논리연산자, col4는 숫자로 구성되어 있습니다. R에서는 문자형식을 자동으로 팩터로 인식하며, 이를 원하지 않을 경우 stringsAsFactors = FALSE를 입력합니다.
df = data.frame (col1 = 1:3,
col2 = c ("this", "is", "text"),
col3 = c (TRUE, FALSE, TRUE),
col4 = c (2.5, 4.2, pi),
stringsAsFactors = FALSE)
str(df)## 'data.frame': 3 obs. of 4 variables:
## $ col1: int 1 2 3
## $ col2: chr "this" "is" "text"
## $ col3: logi TRUE FALSE TRUE
## $ col4: num 2.5 4.2 3.14
또한 벡터 혹은 리스트를 이용해 데이터프레임을 생성할 수도 있습니다.
v1 = 1:3
v2 = c ("this", "is", "text")
v3 = c (TRUE, FALSE, TRUE)
data.frame (col1 = v1, col2 = v2, col3 = v3)## col1 col2 col3
## 1 1 this TRUE
## 2 2 is FALSE
## 3 3 text TRUE
l = list (item1 = 1:3,
item2 = c ("this", "is", "text"),
item3 = c (2.5, 4.2, 5.1))
l## $item1
## [1] 1 2 3
##
## $item2
## [1] "this" "is" "text"
##
## $item3
## [1] 2.5 4.2 5.1
as.data.frame (l)## item1 item2 item3
## 1 1 this 2.5
## 2 2 is 4.2
## 3 3 text 5.1
9.2 기존 데이터프레임에 데이터 추가하기
cbind() 함수를 통해 기존 데이터프레임에 새로운 열을 추가할 수 있습니다.
df## col1 col2 col3 col4
## 1 1 this TRUE 2.500
## 2 2 is FALSE 4.200
## 3 3 text TRUE 3.142
v4 = c ("A", "B", "C")cbind(df, v4)## col1 col2 col3 col4 v4
## 1 1 this TRUE 2.500 A
## 2 2 is FALSE 4.200 B
## 3 3 text TRUE 3.142 C
rbind() 함수를 사용할 경우 새로운 행을 추가할 수 있습니다. 주의할 점은 각 행의 클래스가 기존 데이터와 일치해야 합니다.
v5 = c (4, "R", F, 1.1)
rbind(df, v5)## col1 col2 col3 col4
## 1 1 this TRUE 2.5
## 2 2 is FALSE 4.2
## 3 3 text TRUE 3.14159265358979
## 4 4 R FALSE 1.1
9.3 데이터프레임추출하기
데이터프레임 역시 대괄호를 이용해 데이터를 추출할 수 있으며, 공백으로 둘시 모든 행(열)을 선택하게 됩니다.
df## col1 col2 col3 col4
## 1 1 this TRUE 2.500
## 2 2 is FALSE 4.200
## 3 3 text TRUE 3.142
df[2:3, ]## col1 col2 col3 col4
## 2 2 is FALSE 4.200
## 3 3 text TRUE 3.142
컬럼 이름을 통해 데이터를 선택할 수도있습니다.
df[ , c('col2', 'col4')]## col2 col4
## 1 this 2.500
## 2 is 4.200
## 3 text 3.142
만일 하나의 열만 선택시 결과가 벡터 형태로 출력되며, drop = FALSE 인자를 추가해주면 데이터프레임의 형태가 유지되어 출력됩니다.
df[, 2]## [1] "this" "is" "text"
df[, 2, drop = FALSE]## col2
## 1 this
## 2 is
## 3 text