12.1 변수 레이블
변수 레이블(Variable labels)을 처리하는 R의 능력은 다소 불만족 스럽습니다. 변수 레이블은 변수에 대한 설명을 담고 있는 문자열입니다. 벡터 개체의 레이블 속성을 label(x)
는 x
의 레이블 속성을 검색합니다. label(x) <- "레이블"
은 레이블의 속성을 지정합니다.
Hmisc
패키지를 사용하면 일부 라벨링 기능을 활용할 수 있습니다.
# 패키지 불러오기
# install.packages("Hmisc")
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
# df 데이터 프레임을 생성합니다.
<- data.frame(name = c("Kim", "Lee", "Park"),
df gender = c("Female", "Male", "Female"),
myvar1 = c(1, NA, 3),
myvar2 = c(1, 3, 5))
str(df)
## 'data.frame': 3 obs. of 4 variables:
## $ name : chr "Kim" "Lee" "Park"
## $ gender: chr "Female" "Male" "Female"
## $ myvar1: num 1 NA 3
## $ myvar2: num 1 3 5
# df$name 컬럼에 레이블을 설정합니다.
label(df$name) # df$name에 레이블이 지정되어 있지 않습니다.
## [1] ""
label(df$name) <- c("회원들의 이름입니다.") # df$name에 래이블을 지정합니다.
label(df$name) # df$name의 레이블을 확인합니다.
## [1] "회원들의 이름입니다."
attributes(df$name) # df$name의 속성에서 label 속성이 확인되고,
## $label
## [1] "회원들의 이름입니다."
##
## $class
## [1] "labelled" "character"
# class 속성에 labelled가 추가되어 있습니다.
class(df$name) # df$name의 클래스를 확인합니다.
## [1] "labelled" "character"
# df의 통계적 요약정보를 확인합니다.
describe(df) # df의 통계적 요약정보를 보여줍니다. df$name에 레이블이 출력됩니다.
## df
##
## 4 Variables 3 Observations
## --------------------------------------------------------------------------------
## name : 회원들의 이름입니다.
## n missing distinct
## 3 0 3
##
## Value Kim Lee Park
## Frequency 1 1 1
## Proportion 0.333 0.333 0.333
## --------------------------------------------------------------------------------
## gender
## n missing distinct
## 3 0 2
##
## Value Female Male
## Frequency 2 1
## Proportion 0.667 0.333
## --------------------------------------------------------------------------------
## myvar1
## n missing distinct Info Mean Gmd
## 2 1 2 1 2 2
##
## Value 1 3
## Frequency 1 1
## Proportion 0.5 0.5
## --------------------------------------------------------------------------------
## myvar2
## n missing distinct Info Mean Gmd
## 3 0 3 1 3 2.667
##
## Value 1 3 5
## Frequency 1 1 1
## Proportion 0.333 0.333 0.333
## --------------------------------------------------------------------------------
summary(df) # 레이블이 표시되지 않습니다.
## name gender myvar1 myvar2
## Length:3 Length:3 Min. :1.0 Min. :1
## Class1:labelled Class :character 1st Qu.:1.5 1st Qu.:2
## Class2:character Mode :character Median :2.0 Median :3
## Mode :character Mean :2.0 Mean :3
## 3rd Qu.:2.5 3rd Qu.:4
## Max. :3.0 Max. :5
## NA's :1
안타깝게도 레이블은 describe()
함수와 같이 Hmisc
패키지에서 제공하는 함수에만 적용됩니다.
다른 옵션은 names()
함수를 이용하여 변수 레이블을 변수 이름으로 사용한 다음, 위치 색인으로 변수를 참조하는 것입니다. 그런데 이 방법은 변수명이 너무 길어지는 문제가 있습니다.
## names() 함수를 이용하여 변수 레이블을 변수명으로 사용할 수 있습니다.
attributes(df) # names 속성이 변수명으로 저장되어 있습니다.
## $names
## [1] "name" "gender" "myvar1" "myvar2"
##
## $row.names
## [1] 1 2 3
##
## $class
## [1] "data.frame"
names(df)[3] <- "이것은 세번째 변수의 레이블입니다."
str(df) # 3번째 변수명이 변경되었습니다.
## 'data.frame': 3 obs. of 4 variables:
## $ name : 'labelled' chr "Kim" "Lee" "Park"
## ..- attr(*, "label")= chr "회원들의 이름입니다."
## $ gender : chr "Female" "Male" "Female"
## $ 이것은 세번째 변수의 레이블입니다.: num 1 NA 3
## $ myvar2 : num 1 3 5
attributes(df) # names 속성의 3번째 변수명이 변경되었습니다.
## $names
## [1] "name" "gender"
## [3] "이것은 세번째 변수의 레이블입니다." "myvar2"
##
## $row.names
## [1] 1 2 3
##
## $class
## [1] "data.frame"
3] # df의 3번째 변수 값을 출력합니다. df[
## 이것은 세번째 변수의 레이블입니다.
## 1 1
## 2 NA
## 3 3
names(df)[3] <- "myvar1"