goo blog サービス終了のお知らせ 

Vagilla 新奇一転

世の中の変わったことを考えていこう。

Rで簡単な集計表(パーセント表示)を作成

2012年05月02日 | 統計

統計ソフトRでは、集計はtable()関数、その比率はprop.table()関数で簡単に作成できるが、SASのような両方合わせた表は簡単にできない。得に今、集計の結果をLaTeXで記載しているが、表組みを最初からするのが面倒である。

そこで、簡単なプログラムを作成してみた。
まず、元のtableは以下のようなものである。
x<-table(Diagnosis,EndPoint)
> x
EndPoint
Diagnosis Alive Death
A     2   0
B     15    0
C               13      0
D               36      5

> prop.table(x)
                  EndPoint
Diagnosis Alive              Death
A              0.02816901   0.00000000
B              0.21126761   0.00000000
C              0.18309859   0.00000000
D              0.50704225   0.07042254
>

これを作成したtab.propで処理すると、以下のようになる。
> tab.prop(x,margins=3)
     Alive       %      Death %    Total     %
A        2    2.82      0     0.00      2     2.82
B      15 21.13       0     0.00    15   21.13
C      13 18.31       0     0.00    13   18.31
D      36 50.70       5     7.04    41   57.74
Total 66 92.96       5     7.04    71 100.00
>
marginsは1:縦、2:横、3:全体の比率に対応している。
小数点の桁数はdigits=で指定できる。

> tab.prop(x,margins=2, digits=3)
    Alive        %    Death  %    Total         %
A       2    3.030         0     0        2     1.515
B     15  22.727         0     0      15   11.364
C     13  19.697         0     0      13     9.849
D      36 54.545         5 100      41   77.273
Total 66 99.999         5 100      71 100.000
>

xtableを利用してLaTexにする。
> library(xtable)
> xtable(tab.prop(x,margins=2,digits=2))
% latex table generated in R 2.15.0 by xtable 1.7-0 package
% Wed May 2 21:13:32 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrrrrr}
\hline
& Alive & \% & Death & \% & Total & \% \\
\hline
A & 2.00 & 3.03 & 0.00 & 0.00 & 2.00 & 1.51 \\
B & 15.00 & 22.73 & 0.00 & 0.00 & 15.00 & 11.36 \\
C & 13.00 & 19.70 & 0.00 & 0.00 & 13.00 & 9.85 \\
D & 36.00 & 54.55 & 5.00 & 100.00 & 41.00 & 77.27 \\
Total & 66.00 & 100.01 & 5.00 & 100.00 & 71.00 & 100.00 \\
\hline
\end{tabular}
\end{center}
\end{table}
>

これをTeXの文章に張り付ければ、おしまい。


プログラムは次にあります。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。