如何在 Stata 中使用条件语句遍历文件夹?

How to loop through a folder with conditional statement in Stata?

我有一个包含一堆 csv 文件的文件夹,我想遍历每个文件,检查每个文件中的变量列表是否 = 0,如果是,则将 csv 文件另存为 .dta不等于 0.

我无法找到在线帮助来执行此操作,但这是我目前尝试过的方法:

foreach file in `files' {
  import delimited using `file', clear
  if a & b & c & d != 0 
  save "Desktop\myfolder\`file'.dta"
}

当我尝试这个时,Stata 告诉我“{ 需要 r(100)”。

感谢任何帮助。谢谢

来自help ifcmd

Syntax

    if exp {                         or        if exp single_command
            multiple_commands
    }

所以你可以做任何一个

foreach file in `files' {
    import delimited using `file', clear
    if a & b & c & d != 0 save "Desktop\myfolder\`file'.dta"
}

foreach file in `files' {
    import delimited using `file', clear
    if a & b & c & d != 0 {
        save "Desktop\myfolder\`file'.dta"
    }
}

但是,我认为您的 if 条件并不像您认为的那样。您正在寻找的是:

if a != 0 & b != 0 & c != 0 & d != 0

从可估量的@Wouter Wakker 窃取一些代码,让我们首先假设标准是在 a b c d

中某处找到非零值
foreach file in `files' {
    import delimited using `file', clear

    local OK = 0 

    quietly foreach v in a b c d { 
        count if `v' != 0 
        if r(N) > 0 local OK = 1 
    } 

    if `OK' save "Desktop/myfolder/`file'.dta"
 
}

无论你的精确标准是什么,我认为你需要根据你想要或不想要的东西循环 a b c d 和(比如)countsummarize