Stata 中的双向制表以及对每个变量的所有可能响应

Twoway tabulations in Stata with all possible responses to each variable

我正在尝试在 Stata 中以 tab(双向)或 tabout 的风格创建许多 table 的交叉表。但是,我想包括两个变量的响应选项,即使双向列表中该变量的每个单元格都为零。例如,如果我们稍微改变汽车数据集:

sysuse auto
tab rep78 foreign

* Altering data
replace foreign=. if foreign==0 & rep78==1 
tab rep78 foreign

在更改后的数据中,可能有一辆汽车带有 rep78==1,但在变量 [=15= 的非缺失观察数据中没有这样的实例].

我想要的是table这样的:

Repair  
Record  Car type
1978    Domestic    Foreign Total
1   0   0   0
2   8   0   8 
3   27  3   30 
4   9   9   18 
5   2   9   11          
Total   46  21  67 

Nick Cox 非常好 tabcount 可用于此目的,但

  1. 我不想指定所有可能的响应选项来包含

  1. 我希望能够像 tabout 一样干净地导出 table。我经常不得不创建 tables 的批次,其中 tables 中的许多单元格由于缺失而具有零观察值,而且我经常有很多很多可能的响应选项。

有什么解决方法可以让我继续使用 tabout 或类似的东西吗?

在我最初的评论中,必须有某种意义告诉 Stata 什么定义了行和列,或者如何找到它。不过,这可能会有所帮助:

* ssc inst tabcount 

sysuse auto, clear 
tab rep78 foreign

levelsof rep78, local(rows) 
levelsof foreign, local(cols) 

replace foreign=. if foreign==0 & rep78==1 

tabcount rep78 foreign, v1(`rows') v2(`cols') zero 

备注:

  1. tabcount 必须在执行此操作之前安装。使用 ssc inst tabcount 来做到这一点。上面的命令被注释掉,表示在第一次使用后不需要它。

  2. 在查看所需的交叉组合之前,您可以根据数据中的查找值编写自己的命令或执行文件。

  3. 论文 here 作为更广泛的讨论可能会有所帮助。