2

我正在使用maxvars设置为 32767 并memory设置为 640 Mb 的 Stata/SE 12。我当前的数据集由 9,000 个观察值(行)和 16,800 个变量(列v1, v2和最多v16800)组成。

我想reshape使用以下代码行的命令将数据集转换为长格式:

reshape long v , i(simulation) j(_count)

Stata 给我错误 134: _count 的值太多。

观察数量是否有任何Stata限制?这里可能是什么问题?

4

2 回答 2

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)
于 2013-09-06T13:27:13.093 回答
2

这不是最好的解决方法,但尝试将主数据集中的变量拆分为两个或多个数据集,然后分别进行重塑并附加。

我使用带有 and 的 Stata/MP 11 进行了模拟和复制set memory 2gset maxvar 32000并且我可以用 8,000 个变量重塑数据集,但是在尝试使用 16.8k 个变量时我得到了同样的错误。尽管即使使用 8k,也需要一段时间才能完成命令。拆分为 1000 个数据集可能会更好,因为最终的附加循环只需要一次更改。

Reshape 似乎在超过几百个j; 其他人可能对此了解更多技术背景。

于 2013-09-06T13:48:26.780 回答