반응형
cut 함수: 도수분포표 작성
- cut 함수는 숫자형 벡터를 요인형으로 구분해준다. 엄밀히 말하여 도수분포를 작성해주는 것은 아니다.
- 예를 들어, 학생들의 키 벡터가 height = c(152cm, 170cm, 160cm, 155cm, 180cm) 와 같이 제시되어 있고
- cut 함수로 학생들의 키를 세 개 구간으로 나눈다고 하면 다음 같이 세 개 구간을 알려준다.
- [152, 161), [161, 171), [171, 180) 여기서 각 구간이 요인(factor)이 된다.
- height[1]의 경우 152이므로 [152, 161)에 구간에 해당한다.
- career 데이터의 gradM 변인을 3개 구간으로 cut 하면 아래와 같이
- head 함수로 출력한 첫 6개 데이터는 200이하인 관측값이 5개, 400 초과, 601 이하의 관측값이 1개라는 점을 알 수 있다.
- 하단의 Levels는 전체 구간을 보여준다.
head(cut(career$gradM, 3))
[1] (-0.6,200] (-0.6,200] (-0.6,200] (-0.6,200] (-0.6,200] (400,601]
Levels: (-0.6,200] (200,400] (400,601]
- cut 함수는 summary와 함께 사용하여 도수분포표를 작성할 수 있다.
- 아래 결과처럼, 남학생 졸업생 수(gradM)가 200명 이하인 학교는 1540개
- 200명 초과, 400명 이하인 학교는 426개, 400명 초과, 601명 이하인 학교는 65개이다.
summary(cut(career$gradM, 3))
(-0.6,200] (200,400] (400,601] NA's
1540 426 65 32
- 구간의 개수 대신에 구간 벡터를 집어 넣어서 임의로 설정할 수 있다.
- c(0, 100, 200, Inf)를 넣어주면, (0, 100], (100, 200], (200, 최대값]과 같이 세 개 구간으로 나뉜다.
- Inf는 R의 내장상수(Constant)로, 무한대(Infinity) 값을 의미한다.
summary(cut(career$gradM, c(0, 100, 200, Inf)))
(0,100] (100,200] (200,Inf] NA's
631 513 491 428
- 그런데 위의 결과값이 무언가 이상하다. 관측값이 0인 학교가 모두 결측(NA)으로 잡힌 것.
- cut은 기본 세팅으로 개-폐구간 ( , ] 이 설정되어 있다.
- 여기서 (0, 200] 은 0보다 크고 200보다 작거나 같은 데이터를 뽑아내기 때문에,
- 남학생 졸업자수가 0인 학교의 데이터가 NA로 잡힌 것이다.
- 이 경우 최소값을 폐구간으로 설정하기 위해 include.lowest=T 옵션을 넣어주면 된다.
- 또는 right=F 옵션을 걸어주면 폐-개 [ , ) 구간으로 바꿀 수 있다.
- 통상 도수분포표를 읽기 쉽게 이상~미만으로 하기 때문에 이 옵션을 걸어준다.
summary(cut(career$gradM, c(0, 100, 200, Inf), include.lowest=T))
summary(cut(career$gradM, c(0, 100, 200, Inf), right=F))
[0,100] (100,200] (200,Inf] NA's
1027 513 491 32
[0,100) [100,200) [200,Inf) NA's
1024 513 494 32
Copyright (2018) Ruahneuma. All Rights Reserved.
반응형
'R|Rstudio' 카테고리의 다른 글
집단별 평균 차이검정(t검정, t-test) (0) | 2018.07.24 |
---|---|
집단별 기초 통계량 구하기 (0) | 2018.06.11 |
#2 데이터 가공하기(Manipulating) (0) | 2018.05.22 |
#1 데이터 확인하기(Checking) (0) | 2018.05.21 |
[R/RStudio] #0 기본 코드 정리 (0) | 2018.05.14 |