Stata:使用reshape命令将大量变量转换为长格式

时间:2013-09-06 12:46:38

标签: stata

我正在使用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限制?这可能是什么问题?

2 个答案:

答案 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 2gset maxvar 32000的Stata / MP 11模拟并复制了这个,我可以重塑一个包含8,000个变量的数据集,但在尝试使用16.8k变量时,我得到相同的错误。虽然即使是8k,但完成命令需要一段时间。分割成1000的数据集可能更好,因为最终的追加循环只需要一次更改。

重塑似乎比j的几百个值大大减慢;其他人可能知道更多的技术背景。