浏览目录中的文件列表,并在发生错误时将var跳过文件的内容制成表格

时间:2017-05-09 17:45:58

标签: stata

我试图打开我目录中找到的所有.dta文件,将年份变量制成表格,检查数据提供商是否发送了我所请求的所有年份,并找到不在的文件。 t包含年份变量以进行更仔细的检查。到目前为止,我已经尝试过这个:

local files: dir "$new" files "*dta"

foreach file in `files' {
    local file: subinstr local file ".dta" "" 
    use "$new\\`file'", clear
        if acadyr in `files' {
            di "`file'"
            tab acadyr, m
            di " "
            }
        else if _rc==111 {
            di "YEAR VAR NOT IN: `file'"
            ds
            di " "
        }
    }       

我得到error not found。我可以通过使用if else来避免使用capture,但之后没有任何内容列表。有没有办法创建一个条件,如果发生错误我会执行x但是如果找不到则继续?在python中,这可以使用tryexcept完成,但我不知道如何在Stata中执行此操作,这是我必须用于此项目的内容。

2 个答案:

答案 0 :(得分:0)

我发现了一个回答我问题的statalist问题。我会发布我的答案以澄清任何混淆,如果有其他人遇到这个问题。

local files: dir "$new" files "*dta"

foreach file in `files' {
    use "$new\\`file'", clear
    capture confirm variable acadyr
        if !_rc {
            di "`file'"
            tab acadyr, m
            di " "
            }
        else {  
            di "YEAR VAR NOT IN: `file'"
            ds
            di " "
        }
    }

答案 1 :(得分:0)

这可能会有所帮助。一些小细节:

在感兴趣的目录中工作。

消除.dta后缀没有明显的意义。

cd $new
local files: dir . files "*dta"

foreach file of local files {
    use "`file'", clear
    di "`file'" 
    capture confirm variable acadyr 
    if _rc display "acadyr not found" 
    else tab acadyr, m
    di 
}