楼主: 薄言往诉
3582 1

[编程问题求助] 如何在循环时只选择部分变量参与循环? [推广有奖]

  • 0关注
  • 1粉丝

已卖:54份资源

博士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
106 个
通用积分
48.7543
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
1431 点
帖子
72
精华
0
在线时间
386 小时
注册时间
2014-5-6
最后登录
2025-6-29

楼主
薄言往诉 发表于 2018-3-24 14:37:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果要循环一个文件中的所有变量,那么可以用语句:foreach v of varlist _all {
}

但是,如果我只想循环其中一部分变量,应该在哪里做限定呢?是在foreach语句前面先定义“varlist”吗?
或者能不能在foreach语句中间对“v”进行一个判断,假如v不是某几个特定变量(比如id和year),那么就对它执行后面的操作。这个判断语句又应该怎么写呢?主要是我不知道如何判断变量是否同一个变量,好像不可以用`v'!=year这种写法吧。

附上我的整体代码:
program gensdvariable          
version 15
sort Stkcd year month
foreach v of varlist _all {
  local i=1
  destring `v', replace
    forvalues i= 1/3 {
    by Stkcd: gen `v'_lag`i'=`v'[_n-`i']
    local i=`i'+1
    }
egen sd_`v'=rowsd(`v' `v'_lag1 `v'_lag2 `v'_lag3)
}
end


代码的目的主要是对文档中的部分变量(现在设置的是所有变量)进行循环,求出每个变量的滞后值,并计算滞后值的标准差。
或者还有一种想法是,能否将foreach语句单独定义成一个程序,设置参数为某个变量,也就是我可以选择只对某一个变量执行foreach语句。

请问如何实现?谢谢!!
二维码

扫码加我 拉你入群

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

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

关键词:forvalues destring forvalue Variable foreach

沙发
黃河泉 在职认证  发表于 2018-3-24 16:01:14
用 foreach/forvalues 通常都不是好的作法 (虽然比较直觉),Stata 一般都有更有效之作法,请重述你要做的问题并以 dataex 印出部分有代表之资料以供实验之用。
1.        你若要问程序 (code),请附上资料;你若要附上资料,请用 dataex 印出资料。
2.        尔后建议请用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 12:20