2017-06-22 53 views
0

在我創建的Stata程序中,我需要知道程序參數是否是因子變量。確定varname是否是因子變量

program define my_program, rclass 

    syntax varname(fv) 

    if ... { 
     display "`varlist' is a factor variable" 
    } else { 
     display "`varlist' is NOT a factor variable" 
    } 

    ... 

end 

my_program age 
my_program i.gender 

我該如何編寫if條件來完成這項工作?我寧願在不檢查varname是否以「i」開頭的情況下使其工作。 Stata知道這是否是一個因素變量,因爲Stata提供了「fv」選項(即varname(fv))。那麼,如何利用Stata內置的功能來確定呢?

謝謝!

回答

0

我對下面顯示的代碼感到尷尬,但它通過比較應用於變量列表的unabfvunab的結果爲您指出瞭解決方案的方向。

. sysuse auto, clear 
(1978 Automobile Data) 

. capture unab mac_unab : i.foreign 

. display _rc 
101 

. capture fvunab mac_unab : i.foreign 

. display _rc 
0 

. capture tsunab mac_unab : i.foreign 

. display _rc 
101 

. 
0

我發現語法返回一個宏S(fvops),「當因子變量指定和空否則這將是等於‘真’。」 (http://www.stata.com/support/faqs/programming/factor-variable-support/

因此,我能夠實現我想用下面的代碼:

program define is_categorical, rclass 

    syntax varname(fv) 

    return scalar is_categorical = ("`s(fvops)'" == "true") 

end 

is_categorical i.education_level 
相關問題