# naver search confirm # markdown number and equation R 교차표 작성 //google adsense
본문 바로가기
R_데이터 분석 기술

R 교차표 작성

by 노마드분석가 2022. 4. 8.

1. 들어가며

데이터 분석 또는 보고서 작성시 범주형 데이터의 빈도(frequency)를 교차표(cross table)로 작성해야 할 경우가 많다. 

주로 엑셀로 작업을 하는 경우가 많지만 간단하게 R 코드로 작업하는 법을 알아보자. 

 

2. 예제 데이터

R 패키지는 특정한 기능을 수행하는 함수들의 집합이지만 대부분 내장 데이터 셋을 포함하고 있다. 특정 패키지에 포함된 내장 데이터를 보기 위해서는 아래와 같이 코딩하면 된다. 

 

data(package="MASS") # 인자에 패키지 이름을 적는다

 

[그림 1] MASS 패키지에 포함된 내장 데이터 리스트

 

내장 데이터 중에서 survey 데이터의 구조를 보자. 

 

str(survey)

 

 

12개의 변수와 237개의 행 데이터를 포함하고 있다. 12개의 변수 중 Sex, W.Hnd, Fold, Clap, Exer, Smoke, M.I는 factor 변수다. 이 중 두 개의 범주형 변수를 선택해 빈도 교차표를 만들어 보자. 

 

3. 빈도 교차표 작성

기본 문법은 다음과 같다. 

 

table(행변수, 열변수)

 

행 변수를 W.Hnd, 열 변수를 Fold로 지정하고 결과를 보자. 

 

table(survey$W.Hnd, survey$Fold)

 

 

2X3 교차표가 만들어졌다. 많은 경우 행 합계, 열 합계가 필요한 경우가 있다. 이때는 addmargins 함수를 이용한다. 아래 코드를 실행하면 가로, 세로 합계(sum)가 추가된 표를 얻는다. 

 

example = table(survey$W.Hnd, survey$Fold) #교차표를 변수에 저장
addmargins(example) #addmargins 함수 인자에 저장한 변수 이용

 

 

위의 결과를 바로 엑셀 시트로 저장할 수 있다.  아래 코드를 참고하자. 자세한 내용은 아래 참고 글(excel.link)을 참고하기 바란다.

 

 

excel.link

1. 들어가며 R에서 전처리된 데이터, 또는 분석 결과를 엑셀로 이동해 리포트를 완성해야 할 경우가 많다. 이때 "excel.link"는 매우 간편하게 활용할 수 있는 패키지다. 2. 코드 library(excel.link) # (1) xl

diseny.tistory.com

 

library(excel.link)     
xl.sheet.add('new')     
xlrc[["a1"]] = example.sum

 

코드를 실행하면 엑셀 프로그램이 자동으로 켜지면서 합계 집계표가 시트에 들어간 것을 확인할 수 있을 것이다. 

가로 또는 세로 합계 하나만 필요한 경우 다음과 같은 코드를 쓰면 된다. 

 

addmargins(example,1) #1=열합계, 2=행합계

 

4. 비율 교차표 작성

빈도 수가 아니라 비율 값이 들어간 교차표를 구해야 할 경우도 있다. 이때는 prop.table 함수를 이용한다. 

 

p.table = table(survey$W.Hnd,survey$Fold)
prop.table(p.table)

5. gmodels 패키지 활용

gmodels 패키지를 활용하면 빈도수, 비율 등을 한번에 잘 정리된 테이블로 나타낼 수 있다. 

 

library(gmodels)
CrossTable(survey$W.Hnd, survey$Fold)

 

결과는 아래와 같이 한번에 모든 정리를 상대적으로 깔끔하게 정리해 준다. 

 

반응형

'R_데이터 분석 기술' 카테고리의 다른 글

R 랜덤포레스트(randomforest)  (0) 2022.05.03
R_의사결정나무 분석(rpart)  (0) 2022.05.02
R 회귀분석  (0) 2022.04.13
R 주성분 분석  (0) 2022.04.07
R 다중공선성 VIF 값 계산  (0) 2022.04.04
wide & long 데이터 형태 전환  (0) 2022.04.04
R을 이용해 상관계수 구하기  (0) 2022.04.01

댓글