Stata 中的程序,用于区分文件类型(数据集和 do-files)



我正在尝试在Stata中编写一个简单的程序,我的学生可以从我的网站下载数据集和示例文件。该程序称为"usecda",下面是它仅打开数据集的示例。

capture     program drop usecda
program     define usecda
args        data 
use         https://tamaravdd.github.io/icpsrcda/`data', clear
end

然后我可以做:

usecda hrs_subset.dta

我希望同一个程序运行do文件。我如何区分程序中的 do 文件和数据集文件(使用我假设的 if 语句(?我愿意通过文件类型(.dta 或 .do(或通过在名称文件中使用术语来区分它们(do-file 中都有"讲座"(。

该程序将能够执行打开数据集usecda hrs_subset.dta,还可以usecda cda_lecture_nominal.do运行do文件

感谢您的帮助!

这里有一些事情供你处理:

capture program drop usecda
program define usecda
    args data
    // check for .dta file
    if substr("`data'",length("`data'")-3,4) == ".dta" {
        //use "https://tamaravdd.github.io/icpsrcda/`data'", clear
        di "dta file"
    }
    // check for .do file
    else if substr("`data'",length("`data'")-2,3) == ".do" {
        //do "https://tamaravdd.github.io/icpsrcda/`data'"
        di "do file"
    }
    // throw error if not .dta or .do
    else {
        di as err "File `data' incorrectly specified"
    }
end

usecda asdf.dta
usecda asdf.do
usecda asdf.doc

这个想法是检查文件扩展名,如果它是一个.dta文件,那么做一些事情,如果它是一个.do文件,做其他事情,如果它不是其中任何一个,则向用户抛出错误。

我在程序定义下包括了每个示例。

最新更新