首页 > 解决方案 > 如何在 Stata 中编写一个宏来识别标题中具有最新日期的文件?

问题描述

我正在使用 Stata 中的一组 .dta 文件,每个文件都需要一些时间来创建,每个文件都包含文件名中的创建日期(在保存时使用带有今天日期的宏创建)。

目前,我的 do 文件根据今天的日期宏识别要打开的相关 .dta 文件,但这需要我每天运行代码来创建 .dta 文件。

一旦我运行“cd”命令,有没有办法让 Stata 从文件夹中具有相同文件名词干和不同日期的一组文件中识别最近日期的文件(然后打开它)?我查看了 Statalist 和 SO,但看不到答案 - 任何建议都非常感谢。

例如,在文件夹中,我有文件 2020-08-23_datasetA.dta、2020-08-22_datasetA.dta、2020-08-22_datasetB.dta 等,在不同的点上,我会选择 A 的最新版本, B, C 等。因此不要认为简单的排序会起作用,因为有数据集 A、B、C 在起作用。

(我的问题本质上是关于 R - Loading files with the latest date in R的 Stata 版本)

[编辑澄清有多个数据集,每个数据集都有日期,每个数据集都需要在不同的时间点打开]

标签: datestata

解决方案


显然,特定文件夹中的两个或多个文件不能具有相同的名称。但我们知道你的意思。

来自 SSC的实用程序fs将返回与模式匹配的文件名列表,按字母数字排序。根据您的约会约定,最后命名的将是最新的,因为您的日期遵循(年、月、日)顺序。

对文件名的其余部分使用另一种约定不会破坏这一点,但您自然需要拼出感兴趣的文件子集。所以一个模式是

. ssc install fs 
. fs *datasetA.dta 
. local wanted = word(r(files), -1) 

安装只需进行一次。fs您可以通过调用它使用的官方 Stata 来规避。

也许您正在寻找一个程序,但我不清楚您是否需要一个程序。

小细节:您使用这个词的方式与它的 Stata 意义不符。例如,Stata 不是 SAS!术语代码例程脚本是通用的,与任何 Stata 使用不冲突。相反,代码、例程或脚本在您使用的其他软件中可能具有固定的含义。无论哪种方式,最好使用 Stata 术语来表达 Stata 问题。


推荐阅读