2017-06-22 11 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)、戻り構文「因子変数は特に指定し、空である場合に 『真』に等しいであろう。」

program define is_categorical, rclass 

    syntax varname(fv) 

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

end 

is_categorical i.education_level 
: (http://www.stata.com/support/faqs/programming/factor-variable-support/

はしたがって、私は次のコードで、私が欲しかったものを達成することができますよ

関連する問題