[英]Local macro on subsample data using if statement in Stata
我想在Stata中使用local
命令來存儲幾個變量,之后我希望將這些變量導出為兩個子樣本。 我用分組變量grouping_var
分隔數據集,該變量為0或1。我嘗試過:
if grouping_var==0 local vars_0 var1 var2 var3 var4
preserve
keep `vars_0'
saveold "data1", replace
restore
if grouping_var==1 local vars_1 var1 var2 var3 var4
preserve
keep `vars_1'
saveold "data2", replace
restore
但是,輸出與我預期的不一樣,並且數據沒有分成兩個子樣本。 第一個列表包括整個數據集。 我在這里使用if
語句有什么問題嗎?
此處的“ if限定符”和“ if命令”之間有些混淆。 語法if (condition) (command)
是“ if命令”,並且在使用觀察級邏輯條件編寫時,通常不提供所需的行為。
簡而言之,Stata會評估第一個觀察的if (condition)
,這就是為什么將整個數據集保留/保存在第一個塊中的原因( 即 ,按照您當前的排序順序, grouping_var[1] == 0
)。 有關更多信息,請參見http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/ 。
假設您希望在每種情況下都保留不同的變量,則類似下面的代碼應該可以工作:
local vars_0 var1 var2 var3 var4
local vars_1 var5 var6 var7 var8
forvalues g = 0/1 {
preserve
keep if grouping_var == `g'
keep `vars_`g''
save data`g' , replace
restore
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.