1.8 데이터 프레임(Data Frames)
데이터 프레임은 데이터 세트 테이블을 저장하는데 사용되는 특별한 종류의 리스트이다. 각 행은 데이터의 사례를 각 열은 변수로 생각하면 된다. 각 열은 벡터 또는 factor이다.
데이터 프레임의 생성 :
<- data.frame( ID=1:4,
dfr1 FirstName=c("John","Jim","Jane","Jill"),
Female=c(F,F,T,T),
Age=c(22,33,44,55) )
str(dfr1)
## 'data.frame': 4 obs. of 4 variables:
## $ ID : int 1 2 3 4
## $ FirstName: chr "John" "Jim" "Jane" "Jill"
## $ Female : logi FALSE FALSE TRUE TRUE
## $ Age : num 22 33 44 55
$FirstName # dfr1의 두 번째 컬럼 접근 dfr1
## [1] "John" "Jim" "Jane" "Jill"
여기서, R(R 4.0 이전 버전)은 dfr1$FirstName
은 범주형 변수라고 생각하고, 문자 벡터가 아닌 factor 처럼 처리할 것이라는 점을 주목하라. as.vector()
함수를 이용하여 R에게 FirstName
을 factor가 아닌 벡터로 처리하게 하자 :
$FirstName <- as.vector(dfr1$FirstName) # as.factor() : factor로 변환 dfr1
다른 방법으로, stringsAsFactors=FALSE
를 사용하여 처음부터 factor로 처리하지 않도록 할 수 있다. (R 4.0 이후에는 기본적으로 이렇게 설정되어 있다.)
<- data.frame(FirstName=c("John","Jim","Jane","Jill"),
dfr2 stringsAsFactors=F)
$FirstName # Factor가 아님 : 성공 dfr2
## [1] "John" "Jim" "Jane" "Jill"
데이터 프레임의 요소 접근 :
# 행/열 접근
1,] # 첫 번째 행, 모든 열 dfr1[
## ID FirstName Female Age
## 1 1 John FALSE 22
1] # 첫 번째 열, 모든 행 dfr1[,
## [1] 1 2 3 4
# Age 이름의 열 접근
$Age # Age 열, 모든 행 dfr1
## [1] 22 33 44 55
1:2,3:4] # 1행, 2행 그리고 3열과 4열 - "john"과 "jim"의 "gender"와 "age" dfr1[
## Female Age
## 1 FALSE 22
## 2 FALSE 33
c(1,3),] # 1행과 3행 그리고 모든 열 dfr1[
## ID FirstName Female Age
## 1 1 John FALSE 22
## 3 3 Jane TRUE 44
데이터에서 30세 이상
인 사람들의 이름(FirstName)
확인 :
$Age>30, 2] dfr1[dfr1
## [1] "Jim" "Jane" "Jill"
데이터에서 모든 여성(Female == TRUE)
의 평균 나이(mean(Age))
확인 :
<- dfr1$Female==TRUE
females <- dfr1[females, 4]
ages_of_females mean (ages_of_females)
## [1] 49.5