Hmisc表创建

时间:2010-07-28 02:19:27

标签: r

刚开始使用R并试图找出在创建“汇总表”时能满足我需求的因素。我习惯于在SPSS中使用自定义表,而gmodels包中的CrossTable函数几乎可以让我获得所需的位置;更不用说对于刚从R开始的人来说很容易导航。

也就是说,似乎Hmisc表非常擅长创建各种摘要并导出到LaTex(最终我需要做的事情)。

我的问题是:1)您可以在Hmsic页面轻松创建下表吗? 2)如果是这样,我可以互动变量(列中的2)吗?最后3)我可以访问显着性检验的p值(卡方)。

提前致谢,

布洛克

   Cell Contents
|-------------------------|
|                   Count |
|             Row Percent |
|          Column Percent |
|-------------------------|

Total Observations in Table:  524 

             | asq[, 23] 
    asq[, 4] |        1  |        2  |        3  |        4  |        5  | Row Total | 
-------------|-----------|-----------|-----------|-----------|-----------|-----------|
           0 |       76  |       54  |       93  |       46  |       54  |      323  | 
             |   23.529% |   16.718% |   28.793% |   14.241% |   16.718% |   61.641% | 
             |   54.286% |   56.250% |   63.265% |   63.889% |   78.261% |           | 
-------------|-----------|-----------|-----------|-----------|-----------|-----------|
           1 |       64  |       42  |       54  |       26  |       15  |      201  | 
             |   31.841% |   20.896% |   26.866% |   12.935% |    7.463% |   38.359% | 
             |   45.714% |   43.750% |   36.735% |   36.111% |   21.739% |           | 
-------------|-----------|-----------|-----------|-----------|-----------|-----------|
Column Total |      140  |       96  |      147  |       72  |       69  |      524  | 
             |   26.718% |   18.321% |   28.053% |   13.740% |   13.168% |           | 
-------------|-----------|-----------|-----------|-----------|-----------|-----------|

2 个答案:

答案 0 :(得分:4)

gmodels包有一个名为CrossTable的函数,对于那些习惯于SPSS和SAS输出的人来说非常好用。试试这个例子:

library(gmodels)  # run install.packages("gmodels") if you haven't installed the package yet
x <- sample(c("up", "down"), 100, replace = TRUE)
y <- sample(c("left", "right"), 100, replace = TRUE)
CrossTable(x, y, format = "SPSS")

这应该为您提供与您在问题上显示的输出相同的输出,非常SPSS-y。 :)

答案 1 :(得分:3)

如果您来自SPSS,您可能会对Deducer包(http://www.deducer.org)感兴趣。它具有列联表函数:

> library(Deducer)
> data(tips)
> tables<-contingency.tables(
+ row.vars=d(smoker),
+ col.vars=d(day),data=tips)
> tables<-add.chi.squared(tables)
> print(tables,prop.r=T,prop.c=T,prop.t=F)
================================================================================================================

               ==================================================================================               
                                   ========== Table: smoker by day ==========                                   
                       | day 
                smoker |      Fri  |      Sat  |      Sun  |     Thur  | Row Total | 
-----------------------|-----------|-----------|-----------|-----------|-----------|
          No  Count    |        4  |       45  |       57  |       45  |      151  | 
              Row %    |    2.649% |   29.801% |   37.748% |   29.801% |   61.885% | 
              Column % |   21.053% |   51.724% |   75.000% |   72.581% |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|
         Yes  Count    |       15  |       42  |       19  |       17  |       93  | 
              Row %    |   16.129% |   45.161% |   20.430% |   18.280% |   38.115% | 
              Column % |   78.947% |   48.276% |   25.000% |   27.419% |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|
          Column Total |       19  |       87  |       76  |       62  |      244  | 
              Column % |    7.787% |   35.656% |   31.148% |   25.410% |           | 



            Large Sample                                                       
       Test Statistic    DF p-value | Effect Size est.  Lower (%)   Upper (%)  
Chi Squared 25.787       3  <0.001  | Cramer's V  0.325 0.183 (2.5) 0.44 (97.5)
-----------





================================================================================================================

您可以使用xtable包获取计数并测试乳胶或html:

> library(xtable)
> xtable(drop(extract.counts(tables)[[1]]))
> test <- contin.tests.to.table((tables[[1]]$tests))
> xtable(test)