楼主: mooncrystal
2330 9

[编程问题求助] 求解释一段stata代码 [推广有奖]

  • 0关注
  • 2粉丝

讲师

98%

还不是VIP/贵宾

-

威望
0
论坛币
16158 个
通用积分
1.7962
学术水平
12 点
热心指数
10 点
信用等级
6 点
经验
7907 点
帖子
282
精华
0
在线时间
977 小时
注册时间
2011-4-3
最后登录
2022-10-21

楼主
mooncrystal 发表于 2014-12-18 15:55:29 |AI写论文
100论坛币
求解释一段stata代码,notes上的,表示看不懂TT。。。。
local years "39 45 59 70 79 89"

foreach x of local years {
replace ed`x'=0 if ed`x'==. & em`x'!=.
replace ed`x'_f=0 if ed`x'_f==. & em`x'!=.

主要是求问ed`x',em`x',ed`x'_f啥意思?
非常感谢!!

最佳答案

intchen 查看完整内容

x对暂元years中的值“39 45 59 70 79 79”进行遍历,`x'表示对暂元x值的引用,程序运行时,分别用这些值去替换ed`x'中的`x'; 即,当x等于39时,代码replace ed`x'=0 if ed`x'==. & em`x'!=. 就意味着replace ed39=0 if ed39==. & em39!=. 替换后,ed39等就是完整的变量名。
关键词:Stata tata replace foreach years replace local

沙发
intchen 发表于 2014-12-18 15:55:30
x对暂元years中的值“39 45 59 70 79 79”进行遍历,`x'表示对暂元x值的引用,程序运行时,分别用这些值去替换ed`x'中的`x';
即,当x等于39时,代码replace ed`x'=0 if ed`x'==. & em`x'!=. 就意味着replace ed39=0 if ed39==. & em39!=.
替换后,ed39等就是完整的变量名。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
SpencerMeng + 30 + 1 + 2 + 1 精彩帖子

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

藤椅
SpencerMeng 在职认证  发表于 2014-12-18 17:01:19
楼主,您好。

您只是提供了部分code,我认为ed`x'是一个变量的名字

x是随便起得名字,也可以是a 或者aa 或者bbb whatever。

local 局部宏。

您可以查阅下简单的编程local。

板凳
mooncrystal 发表于 2014-12-18 23:56:00
SpencerMeng 发表于 2014-12-18 17:01
楼主,您好。

您只是提供了部分code,我认为ed是一个变量的名字,这个变量是在内存中的。
谢谢!!

报纸
mooncrystal 发表于 2014-12-18 23:56:51
intchen 发表于 2014-12-18 19:17
x对暂元years中的值“39 45 59 70 79 79”进行遍历,`x'表示对暂元x值的引用,程序运行时,分别用这些值去替 ...
感谢!明白了,解释的好清楚!!

地板
mooncrystal 发表于 2014-12-19 01:07:17
intchen 发表于 2014-12-18 15:55
x对暂元years中的值“39 45 59 70 79 79”进行遍历,`x'表示对暂元x值的引用,程序运行时,分别用这些值去替 ...
你好。。。真是抱歉又打扰了。。。可以继续请教下那以下这个命令怎么看呢?
local standardcontrols lnm39abs oil delta_em_imp delta_ed_imp
reg lnm89 nazipj nazi pj39 lnut39pop_59 deglat deglong lnpop89 `standardcontrols' , robust
这儿的意思是reg lnm89 .....lnm39abs吗?可是这里没有循环,oil,delta之类的都不考虑了吗?
非常感谢!!

7
intchen 发表于 2014-12-19 12:06:08
mooncrystal 发表于 2014-12-19 01:07
你好。。。真是抱歉又打扰了。。。可以继续请教下那以下这个命令怎么看呢?
local standardcontrols lnm ...
对暂元standardcontrols赋值为lnm39abs oil delta_em_imp delta_ed_imp,回归时取出standardcontrols的值,reg lnm89 nazipj nazi pj39 lnut39pop_59 deglat deglong lnpop89 `standardcontrols' , robust就是:reg lnm89 nazipj nazi pj39 lnut39pop_59 deglat deglong lnpop89 lnm39abs oil delta_em_imp delta_ed_imp, robust

8
mooncrystal 发表于 2014-12-19 13:24:13
intchen 发表于 2014-12-19 12:06
对暂元standardcontrols赋值为lnm39abs oil delta_em_imp delta_ed_imp,回归时取出standardcontrols的值 ...
谢谢大神!
可是根据我run出来的output,好像不是这个意思诶,regression里面并没有包括standardcontrols的内容,下面是output的截图,可以再帮忙看一下吗,非常感谢!! output do file

9
intchen 发表于 2014-12-19 19:46:52
mooncrystal 发表于 2014-12-19 13:24
谢谢大神!
可是根据我run出来的output,好像不是这个意思诶,regression里面并没有包括sta ...
因为 local 声明的暂元每次运行完后就会清空,所以每次执行 foreach 循环时,必须同时选中上面两行 local 语句,即使依次地分开执行也不行;
建议使用 global 声明全局暂元,用  $暂元名  的方式引用,这样就不会出现问题。

10
mooncrystal 发表于 2014-12-19 21:36:28
intchen 发表于 2014-12-19 19:46
因为 local 声明的暂元每次运行完后就会清空,所以每次执行 foreach 循环时,必须同时选中上面两行 local ...
明白了!感谢大神!

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

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