交叉表有多个项目

Mic*_*ler 7 r crosstab categorical-data

在SPSS中,使用因子(或值)作为表标题,(相对)容易地创建具有多个变量的交叉表.所以,像下面这样的东西(组成数据等).Q1,Q2和Q3每个人都有1,a 2或3.我把它们留作数字,但它们可能是因素,似乎都没有帮助解决问题.

                        1 (very Often)   2 (Rarely)   3 (Never)
   Q1. Likes it           12              15             13
   Q2. Recommends it      22              11             10
   Q3. Used it            22              12             9

在SPSS中,甚至可以请求行,列或总百分比.

我试着从gmodels从DESCR表(),ftable(),xtab中(),交叉表()和交叉表(),并没有这些能处理(据我所知)多个变量; 它们似乎主要处理1个变量与另一个变量交叉,而第3个变量创建层.

是否有一个包含一些很好的交叉表/表示例的包,我可以用来解决这个问题?我确定我错过了一些简单的东西,所以我很感激你指出我错过了什么.也许我必须将每一行生成为一个单独的列表,然后创建一个数据帧并打印数据帧?

更新:我现在已经在包catpec中发现了ctab(),它也在正确的轨道上.有趣的是,R与SPSS中的Ctables没有一致的对应关系,这基本上是用于调查研究的旧表格工具的"标签"工具.ctab()正在尝试,并且是一个令人钦佩的第一步...但你仍然不能用它制作这个表(上面).

Ani*_*iko 7

该Hmisc软件包具有summary.formula可以按照您想要的方式执行某些操作的功能.它非常灵活,请查看帮助页面以获取示例,但这里有一个应用程序来解决您的问题:

library(Hmisc)
dd <- data.frame(Q1=sample(1:3, 20, replace=T), Q2=sample(1:3, 20, replace=T), 
                 Q3=sample(1:3, 20, replace=T))  #fake data
summary(~Q1+Q2+Q3, data=dd, fun=table)
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

 Descriptive Statistics  (N=20)

 +------+-------+
 |      |       |
 +------+-------+
 |Q1 : 1|25% (5)|
 +------+-------+
 |    2 |45% (9)|
 +------+-------+
 |    3 |30% (6)|
 +------+-------+
 |Q2 : 1|30% (6)|
 +------+-------+
 |    2 |35% (7)|
 +------+-------+
 |    3 |35% (7)|
 +------+-------+
 |Q3 : 1|35% (7)|
 +------+-------+
 |    2 |30% (6)|
 +------+-------+
 |    3 |35% (7)|
 +------+-------+
Run Code Online (Sandbox Code Playgroud)

可能的值以行的形式给出,因为它具有不同变量的不同值集的灵活性.您可以使用函数参数(如method和fun)来获取另一个方向.


Bra*_*ani 6

修改前一个示例

library(Hmisc)
library(plyr)
dd <- data.frame(q1=sample(1:3, 20, replace=T),
 q2=sample(1:3, 20, replace=T), 
 q3=sample(1:3, 20, replace=T))  #fake data

cross <- ldply(describe(dd), function(x) x$values[1,])[-1]

rownames(cross) <- c("Q1. Likes it","Q2. Recommends it","Q3. Used it")
names(cross) <- c("1 (very Often)","2 (Rarely)","3 (Never)")
Run Code Online (Sandbox Code Playgroud)

现在十字架看起来像这样

> cross
                  1 (very Often) 2 (Rarely) 3 (Never)
Q1. Likes it                   4         10         6
Q2. Recommends it              7          9         4
Q3. Used it                    6          4        10
Run Code Online (Sandbox Code Playgroud)