【问题标题】:Stata: using reshape command to convert large number of variables to long formatStata:使用reshape命令将大量变量转换为长格式
【发布时间】:2013-09-06 12:46:37
【问题描述】:

我正在使用 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 对观察次数是否有任何限制?这可能是什么问题?

【问题讨论】:

    标签: stata


    【解决方案1】:

    限制与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)
    

    【讨论】:

      【解决方案2】:

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

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

      j 的几百个值之后,Reshape 的速度似乎大大减慢;其他人可能知道更多这方面的技术背景。

      【讨论】:

      • 显然我和@MaartenBuis同时写了我的答案,因此他们建议类似的事情,尽管他的更好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多