Loops 如何使用if忽略未出现的机构并执行rest命令
我有一个关于Stata循环的问题 我有多个机构:变量Loops 如何使用if忽略未出现的机构并执行rest命令,loops,if-statement,conditional-statements,stata,Loops,If Statement,Conditional Statements,Stata,我有一个关于Stata循环的问题 我有多个机构:变量school\u code表示它们的ID,范围在1到10000之间。但有些代码没有出现在数据中 因此,我需要一个有条件的命令,例如,if,来帮助我忽略在给定年份中没有出现的机构。最直接的方法是从数据集(或数据集副本)中删除学校代码不在1到10000范围内的观察结果 drop if ! inrange(school_code,1,10000) 我们应该这样做 或者,可以将if子句应用于单个命令 regress y x1 x2 x3 if inr
school\u code
表示它们的ID,范围在1到10000之间。但有些代码没有出现在数据中
因此,我需要一个有条件的命令,例如,
if
,来帮助我忽略在给定年份中没有出现的机构。最直接的方法是从数据集(或数据集副本)中删除学校代码不在1到10000范围内的观察结果
drop if ! inrange(school_code,1,10000)
我们应该这样做
或者,可以将if子句应用于单个命令
regress y x1 x2 x3 if inrange(school_code,1,10000)
这个问题很模糊,没有(尝试使用)代码的例子。潜在的问题可能是当数据中没有出现这些值时,试图循环1到10000次。有关一组技术,请参见。看看如何提出一个好问题。嗨,尼克,谢谢你的回答。我尝试的代码如下:forvalue i=1(1)10000{use file4_1980_taiwan.dta,clear gen flagHost=(school_code=
i')by sort ut:egen flag2Host=sum(flagHost)drop if flag2Host==0捕获确认变量school_code if{by sort school_code:egen count=count(school_code)重复删除学校代码,强制保留学校代码计数gen host=
i'gen year=1980保存'i'\u 1980\u temp.dta,替换}请编辑您的问题;这样呈现的代码几乎是不可读的。虽然这是一种很好的技术,但我猜OP的问题是不同的。