簡體   English   中英

在Stata中使用if語句對子樣本數據進行局部宏處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM