从因子变量中提取基本变量名称

时间:2017-06-23 19:57:42

标签: stata

给定一个因子变量,例如 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功能而不是使用正则表达式或自己解析它来实现这一点。

有什么想法吗?

谢谢!

1 个答案:

答案 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)