确定varname是否是因子变量

时间:2017-06-22 21:06:42

标签: stata

在我正在创建的Stata程序中,我需要知道程序参数是否是因子变量。

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内置的功能来确定这个呢?

谢谢!

2 个答案:

答案 0 :(得分: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

. 

答案 1 :(得分:0)

我发现语法会返回一个宏 s(fvops),"这将等于' true'当指定因子变量时,否则为空。" (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