해당 포스트는 네이버지식인을 통해 질문 받은 "기초 통계 및 시각화(히스토그램, 파이차트)"에 대한 답변을 공유하는 글입니다.
문제
다음은 경영대 30명에게 전공이 무엇인지 물어본 결과이다.
1) 빈도분포와 막대그림을 보여라.
2) 상대빈도분포와 원형그림을 보여라
풀이
해당 문제는 데이터 생성부터 간단한 통계량 산출과 시각화까지 요구하고 있습니다. 난이도가 높지 않은 문제로 아래에 설명을 차례대로 읽으신다면 쉽게 이해하실 수 있으실 겁니다.
1. 데이터 생성
먼저 데이터셋을 생성하겠습니다. 데이터는 별도 구조가 제시되지 않았기에 단순 벡터로 만들면 됩니다.
my_data <- c('A','M','M','A','M','M','E','M','O','A',
'E','E','M','A','O','E','M','A','M','A',
'M','A','O','A','M','E','E','M','A','M')
my_data
[1] "A" "M" "M" "A" "M" "M" "E" "M" "O" "A" "E" "E" "M" "A" "O" [16] "E" "M" "A" "M" "A" "M" "A" "O" "A" "M" "E" "E" "M" "A" "M"
2. 빈도 분포표
빈도 분포표는 table()
함수를 이용하시면 됩니다. 아래 결과를 보면 전공(A, E, M, O)별 빈도가 정상적으로 출력된 것을 볼 수 있습니다.
freq <- table(my_data)
freq
my_data A E M O 9 6 12 3
3. 막대 그림
막대 그림은 barplot()
함수를 이용하여 그릴 수 있습니다. 아래 결과를 보면 정상적으로 전공(A, E, M, O)별 빈도가 그래프로 출력된 것을 볼 수 있습니다.
barplot(freq)
4. 상대 빈도 분포
상대 빈도 분포는 prop.table()
함수를 이용하시면 됩니다. 앞에서 소개하였던 빈도분포 함수 table()
에 확률(비율)이 적용되어 있다고 생각하시면 됩니다.
pfreq <- prop.table(freq)
pfreq
my_data A E M O 0.3 0.2 0.4 0.1
5. 원형 그림
원형 그림(파이차트)는 pie()
함수를 이용하여 그릴 수 있습니다. 상대빈도분포 데이터를 입력값으로 적용하여 출력하시면 됩니다.
pie(pfreq)
마무리
이번 포스팅에서는 R에서 벡터 데이터를 생성하고 통계량 산출 및 시각화 방법을 소개해 드렸습니다. 위에서 소개해드린 함수들은 R에서 기본 제공하는 내장 함수들이며, 보다 깔끔하고 효과적인 출력을 지원하는 외부 패키지들이 많이 있으니 확장하여 공부하시는 것을 추천드립니다.