Stata中如何基于变量名编写if语句及定义变量名本地宏
Stata循环匹配变量名绘制直方图实现方案
使用foreach遍历变量列表时,循环声明里的局部宏会自动存储当前轮次的变量名,不需要额外创建variable_name_x格式的宏,原代码的错误集中在循环宏调用方式、字符串判断格式两部分。
修正后可直接运行的代码
clear input float dummyind_1 float dummyind_2 str10 ind 0.1 0.7 dummyind_1 0.1 0.5 dummyind_2 0.2 0.8 dummyind_1 0.3 0.3 dummyind_2 0.4 0.2 dummyind_1 end foreach x of varlist dummyind_* { hist `x' if ind == "`x'" }
逻辑说明
foreach x of varlist dummyind_*运行时,每一轮的局部宏`x'会自动替换为当前遍历到的dummyind_前缀变量名:第一轮取值为dummyind_1,第二轮取值为dummyind_2,自动覆盖所有符合前缀规则的变量。- 绘图参数写
`x'而非固定字符x,是告知Stata读取宏存储的动态值作为变量名,而非查找名为x的固定变量。 - if条件中给
`x'包裹双引号,是因为ind为字符串类型变量,等值判断需要两侧数据格式一致,避免类型不匹配报错。 - 循环执行时等价于逐行运行以下命令,完全匹配仅保留ind取值等于当前绘图变量名的观测、再绘制直方图的需求:
hist dummyind_1 if ind == "dummyind_1" hist dummyind_2 if ind == "dummyind_2"
内容的提问来源于stack exchange,提问作者adamsalenushka
相关产品推荐
相关产品推荐

