有没有办法在使用制表时通过Stata中的“太多值”错误?

时间:2014-03-03 15:40:56

标签: stata

我正在尝试为Stata中的变量生成频率,条件是另一个变量的类别。

这个其他分类变量对我感兴趣的类别有大约790,000个观察结果。

Stata对单向和双向表的12,000行和1,200行限制分别使得这不可能。

每次运行tab x if y==<category of interest>时都会出现以下错误:

too many values
r(134);

我安装了bigtab包,虽然它为我提供了表格,但它不能与by一起使用或运行统计测试。

有解决方法吗?

当SAS甚至SPSS可以毫无困难地运行完全相同的操作时,Stata应该有这个任意限制似乎很愚蠢。

2 个答案:

答案 0 :(得分:2)

对某些人来说,人们想要超过12000行的表格似乎很愚蠢或者至少令人费解,因为必须有更好的方式来显示结果或回答心中的问题。

尽管如此,tabulate的限制是硬连线的。但你只需要考虑复制你想要展示的东西。所以,对于单向频率

. bysort rowvar : gen freq = _N
. by rowvar : gen tag = _n == 1 
. gsort -freq rowvar 
. list rowvar freq if tag, noobs   

和双向频率

. bysort rowvar colvar : gen freq = _N
. by rowvar colvar : gen tag = _n == 1 
. gsort -freq rowvar colvar
. list rowvar freq if tag, noobs 

groups(SSC)内编码一种类似的方法,有更多的铃声和口哨声。在许多方面更简单的方法是collapsecontract数据集,然后是list它。

在此标记一般策略:

  1. 生成您想要的新变量。

  2. 如果有多个观察结果,则从每个组中仅选择一个观察值。

  3. list,而不是tabulate

  4. 更新

    OP问道

    . bysort rowvar : gen freq = _N 
    

    OP:这会为freq

    中每个值的最后一次计数生成rowvar变量

    我:不。freq变量是rowvar的每个不同值的观察计数。

    . by rowvar : gen tag = _n == 1 
    

    OP:这会为tag中每个独特观察的第一个计数生成rowvar变量。

    我:正确,只要你说“独特”,而不是“独特”。唯一值仅出现一次。

    . gsort -freq rowvar 
    

    OP:按降序排序freqrowvar

    我:它按降序排序freqrowvar按常数freq的块升序排序。

     . list rowvar freq if tag, noobs 
    

    OP:if在这做什么?

    我:那是一个练习。

答案 1 :(得分:1)

使用命令bigtab。 (您必须先安装软件包:运行ssc install bigtab。)如需帮助,请键入h bigtab