我正在尝试为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应该有这个任意限制似乎很愚蠢。
答案 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)内编码一种类似的方法,有更多的铃声和口哨声。在许多方面更简单的方法是collapse
或contract
数据集,然后是list
它。
在此标记一般策略:
生成您想要的新变量。
如果有多个观察结果,则从每个组中仅选择一个观察值。
list
,而不是tabulate
。
更新
OP问道. bysort rowvar : gen freq = _N
OP:这会为freq
rowvar
变量
我:不。freq
变量是rowvar
的每个不同值的观察计数。
. by rowvar : gen tag = _n == 1
OP:这会为tag
中每个独特观察的第一个计数生成rowvar
变量。
我:正确,只要你说“独特”,而不是“独特”。唯一值仅出现一次。
. gsort -freq rowvar
OP:按降序排序freq
和rowvar
我:它按降序排序freq
,rowvar
按常数freq
的块升序排序。
. list rowvar freq if tag, noobs
OP:if
在这做什么?
我:那是一个练习。
答案 1 :(得分:1)
使用命令bigtab
。 (您必须先安装软件包:运行ssc install bigtab
。)如需帮助,请键入h bigtab
。