Stata:使用循环来保持和重塑变量子集

Stata:使用循环来保持和重塑变量子集,stata,Stata,原始数据。我的数据集的文件约有281.000列,我需要将这些列传输到Stata并进行重塑。按照对我以前文章的回复的建议,我尝试使用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 sav

原始数据。我的数据集的文件约有281.000列,我需要将这些列传输到Stata并进行重塑。按照对我以前文章的回复的建议,我尝试使用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) 它只附加第一个和第三个数据子集,而忽略第二个数据子集。对此有何解释?我怀疑这可能与导入原始数据时使用
insheet
use
有关,但我无法找到解决方法


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

第1期。

当您调用-append时,内存中已经有了数据集'3',因此您正在将'1'追加到'3'。你漏掉了'2'

试一试

第2期。

完全可行。看看-foreach-和-forvalues-。比如说跑步

help foreach
去看Stata的帮助

更多

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

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

使用'orig',清除
保持模拟v13-v22
重塑长v,i(模拟)j(_计数)
保存'2'
<snip>
use `orig', clear
keep simulation v13-v22
reshape long v, i(simulation) j(_count)
save `2'
<snip>