본문 바로가기
Data·AI/R 데이터분석

R. 범주형 변수 특성 요약과 시각화(이항형, 다향형)

by hyun-am 2020. 8. 24.

범주형 변수 컬럼 서브데이터셋 추출

먼저 전체 데이터셋 변수컬럼 중에서 항목을 구별해주는 역할을 하는 이항,(다항•명목), 서열형 데이터로 측정된 변수컬럼 서브데이터셋을 별도로 추출하겠습니다.

 

1. 데이터 불러오기

my <- read.csv(file = 'tour.csv', 
               header = TRUE, sep = ',',
               stringsAsFactors = TRUE, 
               strip.white = TRUE,
               na.strings = c('.', '?', 'NA'))

 

2. 범주형 변수 컬럼명 파악하기

ctg_names <- c('month', 'gender', 'edu', 'job', 
               'age', 'nat', 'other', 'object', 
               'member', 'accom', 'activity')

 

3. 범주형 변수컬럼 데이터셋 추출하기

ctg <- my[ctg_names]

 

이항형 명목척도 변수컬럼 특성 파악하기

이항형 명목 척도는 성별처럼 남성 및 여성으로 변수를 선정하여 둘에대한 빈도수 및 비율 분포 특성을 파악할 수 있는 데이터 입니다.

 

먼저 전체 내용을 파악하기 위해 print를 해보겠습니다.

ctg$gender

이런 식으로 1과 2로 된 데이터들로 구성된 것을 확인할 수 있습니다. 

 

총 개수가 몇개인지 확인하는 방법은 다음과 같은 함수를 통해 확인할 수 있습니다.

length(ctg$gender)

NROW(ctg$gender)

str(ctg$gender)

 

다음은 빈도, 비율, 백분율을 계산해 남성과 여성 항목간 분포 특성을 요약 및 집계하겠습니다.

 

⭐️ 제일 먼저 해야할 것은 이항형 명목 척도인 성별 변수를 범주형 데이터인 factor로 변환하는것 입니다.

 

ctg$gender_f <- factor(ctg$gender, levels = c(1,2), labels = c('M', 'F'))

 

이제 팩터형 변수가 잘 만들어 졌는지 확인하겠습니다. 

head(ctg)

gender_f 컬럼과 안에 값들이 잘 들어간 것을 확인할 수 있습니다.

 

이제 이것을 통해 빈도, 비율, 백분율을 보겠습니다.

 

1. 빈도분석

 

gender_f_freq <- table(ctg$gender_f)
gender_f_freq

남성보다 여성이 더 빈도가 높은것을 확인할 수 있습니다. 

 

 

2. 비율 분석

 

gender_f_prop <- prop.table(gender_f_freq)
gender_f_prop

 

3. 백분율 분석

 

gender_f_pect <- round(gender_f_prop, 3) * 100
gender_f_pect

⭐️ 시각화 하기

 

이제 한눈에 파악하기 위해 시각화를 진행하겠습니다. 먼저 멀티 캔버스 프레임을 구성하기 위해 다음과 같은 코드를 실행 시키겠습니다.

par(mfrow=c(2,2))

그 후 각 프레임에 맞는 barplot을 실행시키겠습니다. 만약 맥북 환경에서 한글이 깨지면 아래와 같은 코드를 실행 시킨 후 진행하겠습니다.

par(family="AppleGothic")
# 왼쪽 위
barplot(gender_f_freq,
        main="성별 인원수 분포비교: Simple Bar Plot",
        xlab="성별", ylab="명수")
        
# 오른쪽 위
barplot(gender_f_freq,
        main="성별 인원수 분포비교: Horizontal Bar Plot",
        xlab="성별", ylab="명수",
        horiz=TRUE)
        
# 왼쪽 아래
barplot(gender_f_prop,
        main="성별 비율 분포비교: Simple Bar Plot",
        xlab="성별", ylab="명수",
        density=c(20, 30),
        legend=rownames(gender_f_freq))

# 오른쪽 아래
barplot(gender_f_prop,
        main="성별 비율 분포비교: Horizontal Bar Plot",
        xlab="성별", ylab="명수",
        horiz=TRUE, col=c("lightblue", "pink"), 
        beside=TRUE, legend=rownames(gender_f_freq))

⭐️ barplot에 대한 설명은 다음에 링크를 통해 연결 하겠습니다.

 

다항형 명목척도 변수 컬럼 특성 파악하기

다항형 명목척도는 여러가지 범주형 변수명으로 이루어진 변수 컬럼 입니다. 여기서 저는 예시를 들기위해 방한 목적인 object컬럼을 이용했습니다.

 

여기도 마찬가지로 제일먼저 방한 목적변수를 팩터형 변수로 변환하였습니다.

ctg$object_f <- factor(ctg$object, levels = c(1:8), 
                       labels = c('여가·위락·개별휴가', '뷰티·건강·치료', 
                                  '종교·순례', '쇼핑', '친구·친지 방문', 
                                  '사업·전문 활동', '교육', '기타'))

다음은 대략적인 분포를 확인하기 위해

Hmisc::describe( )를 이용하였습니다.

Hmisc::describe(ctg$object_f)

그러면 다음과 같이 빈도와 비율을 쉽게 파악할 수 있습니다.

 

만약 시각화도 보여주고 싶으면 위에서 했던것처럼 빈도를 나타내는 변수나 비율을 나타내는 변수를 만든 후 시각화를 진행하면되겠습니다. 

 


이 자료는 https://www.youtube.com/channel/UChPuesN49tcqQqYRQHrLCuw를 참조하여 작성하였습니다.

 

 

K-ICT 빅데이터센터

판교 K-ICT 빅데이터센터 공식 유튜브 채널입니다.

www.youtube.com

 

댓글