Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stata:使用重塑命令将大量变量转换为长格式_Stata - Fatal编程技术网

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

Stata:使用重塑命令将大量变量转换为长格式,stata,Stata,我正在使用Stata/SE 12,将maxvars设置为32767,将内存设置为640MB。我当前的数据集包含9000个观察值(行)和16800个变量(列v1、v2和最多v16800) 我想使用以下代码行,使用重塑命令将数据集转换为长格式: reshape long v , i(simulation) j(_count) Stata给了我错误134:\u count取的值太多 观察次数是否有任何Stata限制?这里可能有什么问题?限制与Stata创建变量_count的方式有关,这涉及到制表。这

我正在使用Stata/SE 12,将
maxvars
设置为32767,将
内存设置为640MB。我当前的数据集包含9000个观察值(行)和16800个变量(列
v1、v2
和最多
v16800

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

reshape long v , i(simulation) j(_count)
Stata给了我错误134:\u count取的值太多


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

限制与Stata创建变量_count的方式有关,这涉及到
制表
。这意味着它最多可以处理12000个变量。您可以将文件一分为二,重塑每个子文件的形状,然后添加它们。大概是这样的:

// 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)

这不是最好的修复方法,但是尝试将主数据集中的变量拆分为两个或多个数据集,然后分别执行重塑和追加

我使用Stata/MP 11和
set memory 2g
set maxvar 32000
模拟和复制了这一点,我可以用8000个变量重塑数据集,但在尝试使用16.8k变量时,我会得到相同的错误。即使使用8k,完成命令也需要一段时间。由于最终的append循环只需要一次更改,因此最好将其拆分为1000个数据集


“重塑”的速度似乎大大减慢,超过了几百个
j
;其他人可能知道这方面的更多技术背景。

显然,我与@MaartenBuis在同一时间写了我的答案,因此他们提出了类似的建议,尽管他的更好。