Stata 确定varname是否为因子变量
在我正在创建的Stata程序中,我需要知道程序参数是否为因子变量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
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