在我正在创建的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内置的功能来确定这个呢?
谢谢!
答案 0 :(得分:0)
我对下面显示的代码感到尴尬,但通过比较应用于变量列表的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
.
答案 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