1. 들어가며
데이터 분석 또는 보고서 작성시 범주형 데이터의 빈도(frequency)를 교차표(cross table)로 작성해야 할 경우가 많다.
주로 엑셀로 작업을 하는 경우가 많지만 간단하게 R 코드로 작업하는 법을 알아보자.
2. 예제 데이터
R 패키지는 특정한 기능을 수행하는 함수들의 집합이지만 대부분 내장 데이터 셋을 포함하고 있다. 특정 패키지에 포함된 내장 데이터를 보기 위해서는 아래와 같이 코딩하면 된다.
data(package="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)을 참고하기 바란다.
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 |
댓글