我正在使用Stata / SE 12,maxvars
设置为32767,memory
设置为640 Mb。我当前的数据集包含9,000个观察值(按行)和16,800个变量(列v1, v2
和最多v16800
)。
我想使用以下代码行使用reshape
命令将数据集转换为长格式:
reshape long v , i(simulation) j(_count)
Stata给我错误134:_count占用太多值。
观察数量是否存在Stata限制?这可能是什么问题?
答案 0 :(得分:5)
限制与Stata创建变量_count的方式有关,该变量涉及tabulate
。这意味着它最多可以处理12,000个变量。您可以做的是将文件拆分为两个,重塑每个子文件,然后append
。像这样:
// create some example data
clear
set obs 5
gen id = _n
forvalues i = 1/10 {
gen v`i' = rnormal()
}
// split the files:
tempfile orig one two
save `orig'
keep id v1-v5
save `one'
use `orig'
keep id v6-v10
save `two'
// reshape the files separately
use `one'
reshape long v, i(id) j(_count)
save `one', replace
use `two'
reshape long v, i(id) j(_count)
save `two', replace
// bring the files together again
append using `one'
sort id _count
list, sepby(id)
答案 1 :(得分:2)
这不是最佳解决方案,但尝试将主数据集中的变量拆分为两个或更多数据集,然后单独进行重塑并附加。
我使用带有set memory 2g
和set maxvar 32000
的Stata / MP 11模拟并复制了这个,我可以重塑一个包含8,000个变量的数据集,但在尝试使用16.8k变量时,我得到相同的错误。虽然即使是8k,但完成命令需要一段时间。分割成1000的数据集可能更好,因为最终的追加循环只需要一次更改。
重塑似乎比j
的几百个值大大减慢;其他人可能知道更多的技术背景。