MENU

R で割合を計算する方法

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

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

↑期間・数量限定で無料プレゼント中!

目次

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なら二桁になる。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次