【问题标题】:Stata: Using loops for keeping and reshaping a subset of variablesStata:使用循环来保持和重塑变量子集
【发布时间】:2013-10-13 23:39:17
【问题描述】:

原始数据。我的数据集文件有 ~281.000 列,我需要将其传输到 Stata 并重塑。根据作为对我以前帖子的回复发布的关于 SO 的建议,我正在尝试使用 insheet 命令,拆分和重塑数据块并附加它们。我的代码的当前“玩具”版本如下所示:

insheet using "D:\Trial_Import\products_4_3_2.dat", comma clear
// extract vars

tempfile orig 1 2 3 

save `orig'

keep simulation v2-v12
save `1'

use `orig'
keep simulation v13-v22
save `2'

use `orig'
keep simulation v23-v33
save `3'

// reshape 

use `1'
reshape long v, i(simulation) j(_count)
save `1', replace

use `2'
reshape long v, i(simulation) j(_count)
save `2', replace

use `3'
reshape long v, i(simulation) j(_count)
save `3', replace


append using `1'

代码有两个问题:

1) 它只附加第一个和第三个数据子集,而忽略第二个。对此有何解释?我怀疑这可能与在导入原始数据时使用 insheetuse 有关,但我无法弄清楚修复它的方法。

2) 由于真实数据集包含 281,000 个变量,我想知道是否有一种方法可以使这个过程自动化(即创建一个循环以保持和重塑每个 10000 个变量,然后是下一个 10000 个变量等……)有谁知道在Stata中是否可行?

【问题讨论】:

    标签: stata


    【解决方案1】:

    问题 1。

    当您调用 -append- 时,您的内存数据集为“3”,因此您将“1”附加到“3”。你漏掉了“2”。

    试试

    append using `1' `2'
    

    问题 2。

    完全可行。看看 -foreach- 和 -forvalues-。例如运行

    help foreach
    

    查看 Stata 帮助。

    更多

    我认为您可以在 -keep- 之后执行 -reshape- 来缩短代码。例如:

    <snip>
    use `orig', clear
    keep simulation v13-v22
    reshape long v, i(simulation) j(_count)
    save `2'
    <snip>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多