全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3533 19
2017-03-06
悬赏 50 个论坛币 已解决
现在有变量X_1,x_2,x_3,x_4,x_5,x_6,要生成5个新变量y_1=x_1*x_2*x_3*x_4*x_5*x_6;y_2=x_2*x_3*x_4*x_5*x_6;…;y5=x_5*x_6,如何用一个循环命令解决上述问题?感谢大神点!!!

最佳答案

黃河泉 查看完整内容

Nick Cox 建议
二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-6 17:26:38
Nick Cox 建议
复制代码
二维码

扫码加我 拉你入群

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

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

2017-3-6 19:16:12
非常感谢,[em20][em20][em20][em20][em20]
二维码

扫码加我 拉你入群

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

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

2021-8-9 12:08:44
黃河泉 发表于 2017-3-6 17:26
Nick Cox 建议
黄老师您好!
请帮忙解决循环只执行一次,不能向下执行的问题。谢谢您!到第二个g,drop后的 (g==`t') 就不能变化执行了。试了,不是drop不满足条件中断。
请问这个命令因为什么问题,g=1执行之后就不能执行了呢?g=2更改为符合条件的也不能执行?谢谢

解决的问题:同一公司年度有多个s0701a==1或s0701a==2的seperation值,保留唯一seperation值。
第一步,s0701a==1,seperation不缺失,删除s0701a=2的所有行观测值;然后取s0701a==1,seperation的均值,保留一个seperation值。
第二步,s0701a==1,seperation缺失,删除s0701a==1的所有行观测值;然后取s0701a==2,seperation的均值,保留一个seperation值。

数据如下:
复制代码

不完整的循环命令,不能执行一次后不能执行:

egen g=group(codeyear )          // g分组
sum g
bys codeyear:  egen  seperation0=mean(seperation)  if  s0701a==2
gen seperation1=.
  cap label variable year "年度"
  cap label variable codeyear "代码年度,唯一标识"
  cap label variable seperation "两权分离率(%)_没有单位"
  cap label variable  s0701a     "1=年报中公布,2=根据股权控制链计算所得"
  cap label variable  r_tag         " codeyear 重复次数"
    dataex
forvalues t=1/7  {
set trace on
   if  (g==`t')  &  (s0701a==1)  & (seperation!=. ){
    drop  if  (g==`t') & (s0701a==2)
     }


附件列表
循环执行.png

原图尺寸 33.33 KB

循环执行.png

二维码

扫码加我 拉你入群

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

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

2021-8-10 03:17:27
你看看这是不是你要的结果
复制代码

二维码

扫码加我 拉你入群

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

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

2021-8-12 19:36:54
zdlspace 发表于 2021-8-10 03:17
你看看这是不是你要的结果
谢谢黄老师!帮助很大!
不过,还有两个问题请教:(1)我的循环为什么只能执行一次,之后,如上图,组变量g不根据循环变化?(2)collapse后,seperation只剩下一个均值,如何保留原来的变量和其他许多变量?
附件列表
循环执行.png

原图尺寸 33.33 KB

循环执行.png

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群