给定一个因子变量,例如 i.income_quintile ,我想创建一个程序,返回不带“ i。”前缀的基本变量名称(即。< EM> income_quintile )。
program define get_variable_name, rclass
syntax varname(fv)
return local base_variable_name = ...
end
因为有许多不同的因子变量前缀(i.ib3。,ib(last)。,i(first)。,i30。,i5bn。,I(5 30)bn。等),我想使用内置的Stata功能而不是使用正则表达式或自己解析它来实现这一点。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
我认为fvrevar, list
可以满足您的需求。来自fvrevar
help file:
list
指定所有因子变量运算符和时间序列 从varlist
中删除运算符以及生成的base列表 变量以r(varlist)
返回。没有创建新变量 使用此选项。
fvrevar, list
似乎做了你想要get_variable_name
完成的事情。但是,如果你仍然想写get_variable_name
,它看起来像这样:
program define get_variable_name, rclass
syntax varname(fv)
fvrevar `varlist', list
return local base_variable_name `r(varlist)'
end
请注意,使用交叉运算符的因子变量可以组合多个基本变量,例如c.age#i.group
。如果get_variable_name
可用于此类因子变量,您可能需要将r(base_variable_name)
重命名为r(base_variable_names)
,r(base_varlist)
或r(varlist)
。