如何在 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
和(比如)count
或 summarize
。
我有一个包含一堆 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
和(比如)count
或 summarize
。