楼主: 小七六六
1050 2

[其他] STATA-识别后缀相同的变量 [推广有奖]

  • 1关注
  • 0粉丝

已卖:3份资源

硕士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
22 个
通用积分
23.9535
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
489 点
帖子
25
精华
0
在线时间
248 小时
注册时间
2013-11-13
最后登录
2025-8-9

楼主
小七六六 发表于 2024-6-19 11:53:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
变量中有很多后缀相同的变量,例如temp1 temp2 ....tempN,N是不确定的。如何对这些变量循环操作呢?
方法一:

foreach v of temp*{

        replace `v'=. if `v'==0


}



//这个方法报错 -“temp* invalid name”

方法二:
local A temp*
dis "`A'"
foreach v of local A{

        replace `v'=. if `v'==0

}

//这个方法local 把temp* 识别为一个变量名,而不是多个后缀相同的temp1 temp2 ....tempN

请问怎样可以成功循环这些后缀相同的变量呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata replace foreach invalid

沙发
赵安豆 发表于 2024-6-19 16:04:51
在STATA中处理带有通配符的变量列表需要使用`vars in`语法。你不能直接使用`foreach v of temp*`,但是你可以通过以下方式实现对所有以"temp"开头的变量进行循环:

```stata
foreach v of varlist temp* {
    replace `v'=. if `v'==0
}
```

这个命令会遍历数据集中所有前缀为“temp”的变量,并执行你指定的操作(在这里是将`v`中的零值替换为缺失值)。

为了确保你的代码能够正确运行,可以先检查一下是否存在以"temp"开头的变量:

```stata
local varnames : colfullnames temp*
di "Variables found: `varnames'"
foreach v of local varnames {
    replace `v'=. if `v'==0
}
```

这段代码首先使用`colfullnames`命令找到所有以“temp”开头的变量,然后在控制台上显示这些变量名。接下来,它会遍历每个找到的变量并执行替换操作。

以上方法应该能够解决你的问题,并正确处理带有特定后缀或前缀的一系列变量。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
小七六六 + 5 + 1 + 1 + 1 好的意见建议

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
小七六六 发表于 2024-6-19 20:45:02
赵安豆 发表于 2024-6-19 16:04
在STATA中处理带有通配符的变量列表需要使用`vars in`语法。你不能直接使用`foreach v of temp*`,但是你可 ...
又快又准确!赵安豆真棒!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 10:36