You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:45:48