我有一套18個Stata的數據文件(每年一次),他們的名字是:讓Stata的命令「滴」繼續即使沒有找到變量
{aindresp.dta, bindresp.dta, ... , rindresp.dta}
我想消除每個數據集的一些變量。爲此,我想使用跨數據集的許多變量具有相同名稱以及數據集前綴(a,b,c,... r)給出的前綴的事實。例如,可變rach12
被稱爲在數據集aindresp.dta
arach12
,等。因此,清潔每個數據集,我運行一個循環如下所示:
clear all
local list a b c d e f g h i j k l m n o p q r
foreach var of local list {
use `var'indresp.dta
drop `var'rach12 `var'jbchc1 `var'jbchc2 `var'jbchc3 `var'xpchcf var'xpchc
save `var'indresp.dta, replace
}
實際循環是大得多。我正在刪除大約200個變量。
問題是一些變量隨着時間的推移而改變名稱,或者在幾年後消失。其他變量被添加。因此,只要找不到變量,循環就會停止。這是因爲Stata中的drop
命令停止。然而,這個命令無法迫使它繼續下去。
我該如何實現目標?我不想手動通過每個數據集。
嗯,使用'capture'繼續迭代,如果命令失敗(如文章的標題)。和我以前的標題一樣,我的目標是即使沒有找到一個變量,drop命令也會繼續下降。或者,我必須爲每個單獨的變量寫一個drop,就像你所建議的那樣。是否沒有用戶編寫的命令在命令行中刪除所有找到的變量? – luchonacho
如果出現問題,我沒有在你的問題中確切地看到你想要做什麼。標題只是「繼續循環」。但如果答案是「下降」,那麼這是一個簡單的程序。我會在上面編輯。 –
太棒了!我對Stata代碼不是非常瞭解,但是您的程序是在每個循環中臨時刪除變量**嗎? – luchonacho