gpt4 book ai didi

Stata:附加多个文件并从文件名中提取变量

转载 作者:行者123 更新时间:2023-12-04 04:42:49 24 4
gpt4 key购买 nike

我有 114 个扩展名为 .dat 的文件可以转换为 Stata/SE 并附加,其中包含大量变量(从 81 到 16800 不等)。我已将最大变量数重置为 32000(set maxvar 32000),增加了内存(set mem 500m),我使用以下算法组合大量文件并通过提取部分文件名来生成多个变量:http://www.ats.ucla.edu/stat/stata/faq/append_many_files.htm

代码如下所示:

cd "C:\Users\..."
! dir *.dat /a-d /b >d:\Stata_directory\Products_batchfilelist.txt


file open myfile using "d:\Stata_directory\Products_batchfilelist.txt", read
file read myfile line
drop _all
insheet using `line', comma names



gen n = substr("`line'",10,1)
gen m = substr("`line'",12,1)
gen playersnum = substr("`line'",14,1)


save Products_merged.dta, replace

drop _all
file read myfile line

while r(eof)==0 {
insheet using `line', comma names
gen n = substr("`line'",10,1)
gen m = substr("`line'",12,1)
generate playersnum = substr("`line'",14,1)

save `line'.dta, replace
append using Products_merged.dta
save Products_merged.dta,replace
drop _all
file read myfile line
}

问题是,虽然从文件名中提取的变量 n,m,playersnum 存在于每个单独的文件中,但它们在最终的“Products_merged.dta”文件中消失了。谁能告诉我可能是什么问题,是否可以用 Stata/SE 解决?

最佳答案

我没有看到导致这种情况的代码存在明显问题。这可能与 SE 中的限制有关,但在我看来这仍然不太可能(如果命令执行的操作超过 maxvar,您会看到错误)。

我唯一的建议是在 append 循环中放置几个​​命令来帮助您调试:

save `line'.dta, replace
append using Products_merged.dta
assert m!="" & n!="" & playersnum!=""
save Products_merged.dta,replace

这将做两件事:确保您的变量在每次新追加之后都存在(您的一阶关注),并检查它们永远不会为空(不是您陈述的关注,但无论如何都是一个很好的检查)。

如果您发布几个文件,我可能会给出更好的答案。

关于Stata:附加多个文件并从文件名中提取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18636589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com