如何在Stata中编写宏以标识标题中带有最新日期的文件?

问题描述

我正在使用Stata中的一组.dta文件,每个文件都需要花费一些时间来创建,并且每个文件名中都包含创建日期(在使用当前日期的宏进行保存时创建) )。

目前,我的do文件基于今天的date宏标识了要打开的相关.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 most recent date in R的Stata版本)

[编辑以澄清有多个数据集,每个数据集都已过时,并且每个数据集都需要在不同的位置打开]

解决方法

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

来自SSC的fs之类的实用程序将返回与按字母数字排序的模式匹配的文件名列表。按照您的约会惯例,姓氏将是最新的,因为您的日期遵循(年,月,日)的顺序。

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

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

其中安装只需进行一次。您可以使用对其使用的官方Stata的调用来规避fs

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...