6.9 요인 변수의 할용 예
데이터가 요인으로 저장되면 plot()
함수를 사용하여 각 요인 수준으로 표시되는 관측치 수를 한 눈에 볼 수 있습니다. memb_assoc
데이터 프레임에서 열을 추출하여 요인으로 변환 한 다음 관개 협회의 회원이거나 아니었던 인터뷰 응답자의 수를 살펴 보겠습니다.
# 패키지 불러오기
# install.packages("tidyverse")
library(tidyverse)
# 데이터 불러오기
<- read_csv("data/SAFI_clean.csv", na = "NULL") interviews
##
## -- Column specification --------------------------------------------------------
## cols(
## key_ID = col_double(),
## village = col_character(),
## interview_date = col_datetime(format = ""),
## no_membrs = col_double(),
## years_liv = col_double(),
## respondent_wall_type = col_character(),
## rooms = col_double(),
## memb_assoc = col_character(),
## affect_conflicts = col_character(),
## liv_count = col_double(),
## items_owned = col_character(),
## no_meals = col_double(),
## months_lack_food = col_character(),
## instanceID = col_character()
## )
## interview 데이터 프레임의 memb_assoc 컬럼을 벡터로 만들기
<- interviews$memb_assoc
memb_assoc
## 벡터를 요인으로 강제 변환합니다 : as.factor() 함수 이용
<- as.factor(memb_assoc)
memb_assoc
## 요인 확인하기
memb_assoc
## [1] <NA> yes <NA> <NA> <NA> <NA> no yes no no <NA> yes no <NA> yes
## [16] <NA> <NA> <NA> <NA> <NA> no <NA> <NA> no no no <NA> no yes <NA>
## [31] <NA> yes no yes yes yes <NA> yes <NA> yes <NA> no no <NA> no
## [46] no yes <NA> <NA> yes <NA> no yes no <NA> yes no no <NA> no
## [61] yes <NA> <NA> <NA> no yes no no no no yes <NA> no yes <NA>
## [76] <NA> yes no no yes no no yes no yes no no <NA> yes yes
## [91] yes yes yes no no no no yes no no yes yes no <NA> no
## [106] no <NA> no no <NA> no <NA> <NA> no no no no yes no no
## [121] no no no no no no no no no yes <NA>
## Levels: no yes
## 협회 회원 여부에 따른 응답자 수 막대 그래프
plot(memb_assoc)
벡터의 출력과 비교 한 플롯을 보면 “No
”및 “Yes
”외에도 협회의 회원인지 여부에 대한 정보가 없는 NA
값을 갖는 일부 응답자가 있음을 알 수 있습니다. 이는 누락된 데이터 즉 결측치입니다. 이러한 결측치는 플롯에 나타나지 않습니다. 플롯에서 이러한 결측치를 처리하여 시각화에 반영할 수 있도록 다르게 코딩해 보겠습니다.
## interview 데이터 프레임의 memb_assoc 컬럼을 벡터로 만들기
<- interviews$memb_assoc
memb_assoc
## 결측치를 "undetermined"로 대체합니다.
is.na(memb_assoc)] <- "undetermined" # is.na() 함수를 사용합니다.
memb_assoc[
## 벡터를 요인으로 변환시킵니다. : as.factor() 함수 이용. 수준도 순서를 정해줍니다.
<- as.factor(memb_assoc)
memb_assoc
## 다시 요인의 값들을 확인합니다.
# NA가 모두 undertermined로 변경되었습니다. memb_assoc
## [1] undetermined yes undetermined undetermined undetermined
## [6] undetermined no yes no no
## [11] undetermined yes no undetermined yes
## [16] undetermined undetermined undetermined undetermined undetermined
## [21] no undetermined undetermined no no
## [26] no undetermined no yes undetermined
## [31] undetermined yes no yes yes
## [36] yes undetermined yes undetermined yes
## [41] undetermined no no undetermined no
## [46] no yes undetermined undetermined yes
## [51] undetermined no yes no undetermined
## [56] yes no no undetermined no
## [61] yes undetermined undetermined undetermined no
## [66] yes no no no no
## [71] yes undetermined no yes undetermined
## [76] undetermined yes no no yes
## [81] no no yes no yes
## [86] no no undetermined yes yes
## [91] yes yes yes no no
## [96] no no yes no no
## [101] yes yes no undetermined no
## [106] no undetermined no no undetermined
## [111] no undetermined undetermined no no
## [116] no no yes no no
## [121] no no no no no
## [126] no no no no yes
## [131] undetermined
## Levels: no undetermined yes
## 막대 그래프를 다시 그려 봅니다.
plot(memb_assoc)
막대 그래프를 보면 x
축이 벡터의 수준이고, y
축이 수준별 응답자 수임을 알 수 있습니다. 이제 x
축에 나타난 수준 값의 첫 글자를 모두 대문자로 바꾸고, 그 순서도 “Yes
,” “No
,” “Undetermined
”의 순서로 출력하면 훨씬 막대 그래프가 보기 좋을 것 같습니다.
- 수준의 첫 글자를 대문자로 변환시키기 위해
stringr
패키지의str_to_title()
함수를 사용하면 됩니다. :str_to_title(levels())
- 수준의 순서를 바꾸기 위해서는 factor() 함수를 이용하여 levels = 인수에 순서대로 문자형 벡터로 지정합니다 :
factor( , levels = c())
이 내용들을 반영해서 코딩을 다시 해 보겠습니다.
## 패키지 불러오기 : stringr 패키지는 tidyverse 패키지에 포함되어 있습니다.
## interview 데이터 프레임의 memb_assoc 컬럼을 벡터로 만들기
<- interviews$memb_assoc
memb_assoc
## 결측치를 "undetermined"로 대체합니다.
is.na(memb_assoc)] <- "undetermined" # is.na() 함수를 사용합니다.
memb_assoc[
## 벡터를 요인으로 변환시킵니다. : as.factor() 함수 이용. 수준도 순서를 정해줍니다.
<- factor(memb_assoc, levels = c("yes", "no", "undetermined"))
memb_assoc levels(memb_assoc) <- str_to_title(levels(memb_assoc)) # 수준의 첫글자를 대문자로 바꿔 줍니다.
## 다시 요인의 값들을 확인합니다.
# 요인의 수준과 순서가 변경되었습니다. memb_assoc
## [1] Undetermined Yes Undetermined Undetermined Undetermined
## [6] Undetermined No Yes No No
## [11] Undetermined Yes No Undetermined Yes
## [16] Undetermined Undetermined Undetermined Undetermined Undetermined
## [21] No Undetermined Undetermined No No
## [26] No Undetermined No Yes Undetermined
## [31] Undetermined Yes No Yes Yes
## [36] Yes Undetermined Yes Undetermined Yes
## [41] Undetermined No No Undetermined No
## [46] No Yes Undetermined Undetermined Yes
## [51] Undetermined No Yes No Undetermined
## [56] Yes No No Undetermined No
## [61] Yes Undetermined Undetermined Undetermined No
## [66] Yes No No No No
## [71] Yes Undetermined No Yes Undetermined
## [76] Undetermined Yes No No Yes
## [81] No No Yes No Yes
## [86] No No Undetermined Yes Yes
## [91] Yes Yes Yes No No
## [96] No No Yes No No
## [101] Yes Yes No Undetermined No
## [106] No Undetermined No No Undetermined
## [111] No Undetermined Undetermined No No
## [116] No No Yes No No
## [121] No No No No No
## [126] No No No No Yes
## [131] Undetermined
## Levels: Yes No Undetermined
## 막대 그래프를 다시 그려 봅니다.
plot(memb_assoc)