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()正在尝试,并且是一个令人钦佩的第一步...但你仍然不能用它制作这个表(上面).
该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)来获取另一个方向.
修改前一个示例
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)