If statement Stata中区分文件类型(数据集和do文件)的程序
我正在尝试用Stata编写一个简单的程序,我的学生可以从我的网站下载数据集和示例do文件。该程序称为“usecda”,下面是它仅打开数据集的示例If statement Stata中区分文件类型(数据集和do文件)的程序,if-statement,dataset,stata,If Statement,Dataset,Stata,我正在尝试用Stata编写一个简单的程序,我的学生可以从我的网站下载数据集和示例do文件。该程序称为“usecda”,下面是它仅打开数据集的示例 capture program drop usecda program define usecda args data use https://tamaravdd.github.io/icpsrcda/`data', clear end 然后我可以做: usecda hrs_subset.dta 我希
capture program drop usecda
program define usecda
args data
use https://tamaravdd.github.io/icpsrcda/`data', clear
end
然后我可以做:
usecda hrs_subset.dta
我希望相同的程序运行do文件。如何在程序中区分do文件和dataset文件(使用我假设的if语句)?我愿意通过文件类型(.dta或.do)或在文件名中使用术语(do文件中都有“讲座”)来区分它们
该程序可以执行usecda hrs\u subset.dta
打开数据集,也可以执行usecda cda\u touch\u 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文件,则执行其他操作;如果不是这两个文件中的任何一个,则向用户抛出错误
我在程序定义中包含了每一个示例。颠覆性地,或者,为什么不告诉他们东西在,这样他们就可以键入
使用
读取命名数据集?或do
用于命名的do文件use
和do
是在任何情况下都是关键的命令;为什么要将自己的命令添加到学习负担中,而它们只是包装器?感谢您的反馈!这是一个非常入门的课程,所以我想让他们只处理我的github网站一次,然后用一个简单的命令下载所有内容。非常感谢!我以前尝试过substr命令,但不知道如何使用数据集名称而不是字符串变量。这是非常有用的。