統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

R で割合を計算する方法

R でカテゴリデータを集計して、割合を計算する方法。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

R で割合を計算する方法 カテゴリデータの集計の方法

もっとも使うのがtable()。

表(table)形式で集計する関数だ。

例としてMASSパッケージのbirthwtデータフレームを使う。

lowは低体重出生(1)か、そうではないか(0)。

htは高血圧の既往あり(1)か、なし(0)かである。

それぞれの人数がわかる。

library(MASS)
table(birthwt$low)
table(birthwt$ht)
> table(birthwt$low)

  0   1 
130  59 
> table(birthwt$ht)

  0   1 
177  12 

R で割合を計算する方法 カテゴリデータ集計の割合

カテゴリごとの割合を算出する。

割合はproportionだから、最初の4文字を取って、propだ。

prop.table()の中にtable()を入れる。

prop.table(table()) となる。

prop.table(table(birthwt$low))
> prop.table(table(birthwt$low))

        0         1 
0.6878307 0.3121693 

100倍すれば、パーセンテージになる。

prop.table(table(birthwt$low))*100
> prop.table(table(birthwt$low))*100

       0        1 
68.78307 31.21693 

round()で小数点以下を丸めることもできる。

round(prop.table(table(birthwt$low))*100,1)
> round(prop.table(table(birthwt$low))*100,1)

   0    1 
68.8 31.2 

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

R で割合を計算する方法 クロス集計

2つのカテゴリを掛け合わせて集計することをクロス集計と言う。

男女と好き嫌いとを掛け合わせるという感じだ。

掛け合わせる(クロスさせる)変数同士をカンマで並べて書くだけ。

table(factor1, factor2) というふうに書く。

birthwtデータフレームの高血圧htと低体重出生lowとをクロス集計すると、母親が高血圧で、児の出生体重が低体重だったケースが、7ケースあったことが分かる。

table(birthwt$ht, birthwt$low)
> table(birthwt$ht, birthwt$low)
   
      0   1
  0 125  52
  1   5   7

R で割合を計算する方法 クロス集計の割合を表示させる方法

行の割合と列の割合と全体の割合の3種類が出せる。

場合によって使い分ける。

行(横方向が100%の場合)の割合は、1。

prop.table(table(row variable, col variable),1)

列(縦方向が100%の場合)の割合は、2。

prop.table(table(row variable, col variable),2)

書かないと全体に対する割合が出力される。

prop.table(table(row variable, col variable)) というふうに書く。

行の割合

round(prop.table(table(birthwt$ht, birthwt$low),1)*100,1)
> round(prop.table(table(birthwt$ht, birthwt$low),1)*100,1)
   
       0    1
  0 70.6 29.4
  1 41.7 58.3

列の割合

round(prop.table(table(birthwt$ht, birthwt$low),2)*100,1)
> round(prop.table(table(birthwt$ht, birthwt$low),2)*100,1)
   
       0    1
  0 96.2 88.1
  1  3.8 11.9

全体の割合

round(prop.table(table(birthwt$ht, birthwt$low))*100,1)
> round(prop.table(table(birthwt$ht, birthwt$low))*100,1)
   
       0    1
  0 66.1 27.5
  1  2.6  3.7

R で割合を計算する方法 割合の丸め

小数点以下を丸めるのに、round()という関数を使う。

基本は四捨五入する関数で、0.5はバランスよく丸める。

詳しくはこちら

round() の中で、小数点以下の桁数を指定できる。

round(,1) とすると、小数点以下一桁で丸められる。

round(prop.table(table(birthwt$ht, birthwt$low),1)*100,1)
> round(prop.table(table(birthwt$ht, birthwt$low),1)*100,1)
   
       0    1
  0 70.6 29.4
  1 41.7 58.3

round(,2)は小数点以下2桁、round(,3)は小数点以下3桁。

round(prop.table(table(birthwt$ht, birthwt$low),1)*100,2)
round(prop.table(table(birthwt$ht, birthwt$low),1)*100,3)
> round(prop.table(table(birthwt$ht, birthwt$low),1)*100,2)
   
        0     1
  0 70.62 29.38
  1 41.67 58.33

> round(prop.table(table(birthwt$ht, birthwt$low),1)*100,3)
   
         0      1
  0 70.621 29.379
  1 41.667 58.333

まとめ

カテゴリ集計は、

例数の集計だけなら、table()

割合が見たければ、prop.table(table())

クロス集計は、table(factor1, factor2)

クロス集計の割合は、prop.table(table(factor1, factor2),?)

?の部分は、行の割合なら1、列の割合なら2、全体の割合なら何もなし。

割合をパーセンテージにしたい場合は100をかける。

小数点以下を丸める関数は、round()

小数点以下の桁数を指定するなら、round(,?)の?に数字を入れる。1なら一桁、2なら二桁になる。