Hmisc의 summary.formula는 포뮬러를 인자로 지정할 수 있으며, 지정한 포뮬러에 따라 데이터를 분할하여 분석할 수 있고, 분석 함수를 자유로이 지정할 수 있는 편리한 함수다. summary.formula( )의 요약 방식은 method 값에 따라 달라진다.

    method=“response”인 경우 ~의 우측에 나열한 변수(이하 rhs) 각각이 ~의 좌측에 나열한 변수(이하 lhs)를 요약한다. mtcars 데이터에서 mpg(1갤런당 주행 마일)를 cyl(실린더의 수), hp(마력)에 따라 요약해보자.

    > summary(mpg ~ cyl + hp, data=mtcars)  # method의 기본값은 response다.
    mpg    N=32
    
    +-------+---------+--+--------+
    |       |         |N |mpg     |
    +-------+---------+--+--------+
    |cyl    |4        |11|26.66364|
    |       |6        | 7|19.74286|
    |       |8        |14|15.10000|
    +-------+---------+--+--------+
    |hp     |[ 52, 97)| 8|27.50000|
    |       |[ 97,150)| 9|21.31111|
    |       |[150,205)| 8|17.15000|
    |       |[205,335]| 7|13.41429|
    +-------+---------+--+--------+
    |Overall|         |32|20.09062|
    +-------+---------+--+--------+
    

    코드 실행 결과 cyl의 값(4, 6, 8)에 따른 mpg, hp의 범위에 따른 mpg가 요약된 것을 볼 수 있다. 이때 요약에 사용되는 함수는 mean이다. fun에 함수를 지정하여 다른 요약 값을 얻을 수 있다. 다음은 평균 대신 분산을 구한 예다.

    > summary(mpg ~ cyl + hp, data=mtcars, fun=var)
    mpg    N=32
    
    +-------+---------+--+---------+
    |       |         |N |mpg mpg  |
    +-------+---------+--+---------+
    |cyl    |4        |11|20.338545|
    |       |6        | 7| 2.112857|
    |       |8        |14| 6.553846|
    +-------+---------+--+---------+
    |hp     |[ 52, 97)| 8|18.494286|
    |       |[ 97,150)| 9|13.743611|
    |       |[150,205)| 8| 3.431429|
    |       |[205,335]| 7| 4.804762|
    +-------+---------+--+---------+
    |Overall|         |32|36.324103|
    +-------+---------+--+---------+
    

    method=“reverse”인 경우 lhs에는 범주형 변수를 적고 rhs에 변수들을 적으면 lhs의 분류에 따라 rhs가 요약된다. 다음은 cyl에 따라 mpg, hp를 요약한 예다.

    > summary(cyl ~ mpg + hp, data=mtcars, method="reverse")
    Descriptive Statistics by cyl
    
    +---+--------------------+--------------------+--------------------+
    |   |4                   |6                   |8                   |
    |   |(N=11)              |(N=7)               |(N=14)              |
    +---+--------------------+--------------------+--------------------+
    |mpg| 22.80/26.00/30.40  | 18.65/19.70/21.00  | 14.40/15.20/16.25  |
    +---+--------------------+--------------------+--------------------+
    |hp | 65.50/ 91.00/ 96.00|110.00/110.00/123.00|176.25/192.50/241.25|
    +---+--------------------+--------------------+--------------------+
    

    method=“cross”는 rhs에 나열한 변수의 조합으로 lhs를 요약할 때 사용한다. mpg를 cyl과 hp의 조합에 따라 요약한 결과, 표의 각 셀에는 N(개수)과 평균 mpg가 나타난다.

    > summary(mpg ~ cyl + hp, data=mtcars, method="cross")
    
    mean by cyl, hp
    
    +---+
    |N  |
    |mpg|
    +---+
    +---+---------+---------+---------+---------+--------+
    |cyl|[ 52, 97)|[ 97,150)|[150,205)|[205,335]| ALL    |
    +---+---------+---------+---------+---------+--------+
    |4  | 8       | 3       | 0       | 0       |11      |
    | | 27.50000| 24.43333| | |26.66364|
    +---+---------+---------+---------+---------+--------+
    |6  | 0       | 6       | 1       | 0       | 7      |
    |   |         | 19.75000| 19.70000|         |19.74286|
    +---+---------+---------+---------+---------+--------+
    |8  | 0       | 0       | 7       | 7       |14      |
    |   |         |         | 16.78571| 13.41429|15.10000|
    +---+---------+---------+---------+---------+--------+
    |ALL| 8       | 9       | 8       | 7       |32      |
    |   | 27.50000| 21.31111| 17.15000| 13.41429|20.09062|
    +---+---------+---------+---------+---------+--------+
    

    summary.formula에는 test=TRUE를 지정하면 다양한 가설 검정을 수행하는 등의 기능도 포함되어 있다. example(summary.formula)로 어떤 기능이 지원되는지 살펴보기 바란다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.