Stata 确定varname是否为因子变量

Stata 确定varname是否为因子变量,stata,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_progra

在我正在创建的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内置的功能来确定这一点呢


谢谢

下面显示的代码让我感到尴尬,但通过比较应用于变量列表的
unab
fvunab
的结果,它确实为您指明了解决方案的方向

. 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

. 

我发现syntax返回一个宏s(fvops),“当指定因子变量时,该宏将等于'true',否则为空。” ()

因此,我能够通过以下代码实现我想要的:

program define is_categorical, rclass

    syntax varname(fv)

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

end

is_categorical i.education_level