R|Rstudio

데이터 요약하기(Summarizing)

루아흐뉴마 2018. 6. 7. 23:07
반응형

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.


반응형