在Stata中开发一个程序来处理工作文件夹中的多个文件,就像使用临时文件的SAS一样 [英] Develop a program in Stata to handle multiple files in work folder just like SAS using tempfile

查看:22
本文介绍了在Stata中开发一个程序来处理工作文件夹中的多个文件,就像使用临时文件的SAS一样的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Stata中围绕tempfile开发这个包装器,以便同时处理多个数据集,而不必将它们保存在当前目录中。因此,从本质上讲,我希望Stata模仿SAS,这就是程序名为Work的原因;初始代码没有任何选项和最低限度的功能。我一直坚持您的建议,不要标记化和编程工作;然而,问题是一旦我在进一步的程序中调用临时文件,这个程序(工作)不会将句柄传递到下一个调用临时文件的句柄。

"工作"代码

capture program drop work
program define work
version 12.1
syntax [name(id="file name")] [, sort(string) ]
*tokenize namelist
*di "namelist'" 
*if "nol'" !="" | "nol'" !="" | "nolabel'" !="" { 
      * di "``namelist''" 
*} 
tempfile namelist' 
*di "namelist'" 
if "sort'" != "" { 
    sortsort' 
} 
di "File 'namelist'' saved in following temporary work folder" 
save ` namelist''

*di "Now you can use temporary file =namelist'' in your program" 
end

一旦我按如下方式调用DO文件中的临时文件,就会出现以下错误:

work Orig File 'Orig' saved in following temporary work folder file C:Userssaa602AppDataLocalTempST_00000001.tmp saved

. di "`Orig'"

. use `Orig', replace

invalid file specification
请注意,我已经成功地使用tempfile处理了多个文件,特别是在合并大量文件时,没有任何麻烦;但是,一个带有排序和显示工作目录位置选项的包装程序对我们所有人来说都非常方便。

推荐答案

正如@Roberto Ferrer所指出的,该程序很难阅读。(我们中的一些人试图改进演示文稿,但不是为了修复代码错误。)事实上,它包含许多致命的小错误,主要是在引用本地宏时使用单引号时近乎随机性

 `   ' 
缺少您需要的引号;提供了在您的情况下会致命的额外引号;您在某些行中使用了错误的引号。因此,关于该计划有效的说法是未经证实的,似乎是荒谬的。充其量,你的节目展示得非常粗心和不专业。

然而,有一个核心误解完全破坏了该计划的意图。由tempfile命名并以某种方式在程序中创建的临时文件在程序的end之后不会继续存在。这就是文件是临时的确切意义上的。因此,想象使用临时文件是一种将save文件用于任何后续目的的方法是徒劳的。即使是这样,直接使用文件也不会有任何好处。

一个微不足道的例外是,有时如果Stata会话崩溃,临时文件会停留在程序的end之外,但由于这基本上是不可预测的,它与您的项目没有任何关系。

程序的另一个非凡特性是,它最多只能将当前数据集保存在一个临时文件中。您的代码中没有任何与多个文件有关的内容。

对于STATA程序员来说,想要模仿SAS所做的事情并不是一个显而易见的目标;我猜测熟悉SAS的STATA程序员的比例约为1%,因此您需要更多地解释,除非您的目标读者是1%。要使这成为一个有任何价值的问题,您至少需要解释一下同时处理几个数据集在Stata术语中的实际含义。Stata的想法是,您希望关联的数据集可以使用appendmerge和其他这样的命令组合在一起,但这看起来一点也不像您想要的。

关于避免tokenize的建议:我认为这一点一点也不清楚。从谁那里得到什么建议,更重要的是为什么?

如果您想向我们展示一个可以工作的程序,并就如何扩展它征求建议,这可能是有意义的,但目前看来,您的想法从一开始就不可能实现。呈现充满错误的代码并声称它有效,这是非常令人费解的。

这篇关于在Stata中开发一个程序来处理工作文件夹中的多个文件,就像使用临时文件的SAS一样的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆