楼主: mzdg
1450 9

[面板数据求助] stata解决特定问题的编程求助 [推广有奖]

  • 0关注
  • 35粉丝

已卖:813份资源

教授

24%

还不是VIP/贵宾

-

威望
0
论坛币
33693 个
通用积分
60.7676
学术水平
73 点
热心指数
85 点
信用等级
59 点
经验
65344 点
帖子
768
精华
1
在线时间
1273 小时
注册时间
2013-10-14
最后登录
2025-12-11

楼主
mzdg 在职认证  学生认证  发表于 2018-12-15 00:41:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

各位大神好,问题如下:
在stkcd-year的公司-年度面板数据中,有一个虚拟变量dummyvar,我想找出每一个公司,dummyvar连续取值为(0,0,0,1,1,1,)的样本。例如在下面的数据样本中,stkcd=16, year=2006-2011的6个样本就满足要求。
我试着自己编程,但总是出错,求助各位了!

*数据样例:
clear
input long stkcd int year float dummyvar
10 2002 .
10 2003 0
10 2004 .
10 2005 .
10 2006 .
10 2007 .
10 2008 .
10 2009 0
10 2010 0
10 2012 .
10 2013 0
10 2014 0
11 2000 1
11 2001 1
11 2002 1
11 2004 .
11 2005 1
11 2006 1
11 2007 1
11 2008 1
11 2009 1
11 2010 1
11 2011 1
11 2012 1
11 2013 1
11 2014 1
12 2000 .
12 2001 .
12 2002 1
12 2003 1
12 2004 1
12 2005 1
12 2006 1
12 2007 1
12 2008 1
12 2009 .
12 2010 .
12 2011 1
12 2012 1
12 2013 1
12 2014 1
14 2000 0
14 2001 0
14 2002 1
14 2003 1
14 2004 1
14 2005 1
14 2006 1
14 2007 0
14 2008 0
14 2009 0
14 2010 0
14 2011 0
14 2012 0
14 2013 0
14 2014 0
16 2000 .
16 2001 .
16 2004 0
16 2005 0
16 2006 0
16 2007 0
16 2008 0
16 2009 1
16 2010 1
16 2011 1
16 2012 1
16 2013 0
16 2014 0
17 2004 .
17 2005 0
17 2006 0
17 2007 0
17 2010 0
17 2011 0
17 2012 0
17 2013 0
17 2014 0
18 2002 1
18 2003 1
18 2004 1
18 2005 1
18 2006 1
18 2007 1
18 2008 1
18 2009 1
18 2010 1
18 2011 1
18 2012 1
18 2013 1
18 2014 1
19 2005 1
19 2006 0
19 2007 0
19 2008 1
19 2009 1
19 2010 1
19 2011 0
19 2012 0
19 2013 0
end


二维码

扫码加我 拉你入群

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

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


太极生两仪

沙发
317792209 在职认证  学生认证  发表于 2018-12-15 11:39:27
把你的程序贴上来

藤椅
黃河泉 在职认证  发表于 2018-12-15 12:12:10
1. 都是六年资料吗? 2. 一定要是
  1. 0,0,0,1,1,1
复制代码
之型态吗?

板凳
317792209 在职认证  学生认证  发表于 2018-12-15 13:38:38
最近做国泰安数据匹配,恰好遇到需要将营业收入连续两年下降的年份设定为1,其余为0,数据为面板数据。把我的思路结合楼主的数据,不知合理不?水平有限,方法比较笨。
  1. sort stkcd year
  2. bys stkcd:gen dummy=1 if dummyvar[_n]==0 & dummyvar[_n+1]==0 & dummyvar[_n+2]==0 & dummyvar[_n+3]==1 & dummyvar[_n+4]==1 & dummyvar[_n+5]==1
  3. xtset stkcd year

  4. forvalue i= 1/5 {
  5.   bys stkcd:gen dummy`i'=L`i'.dummy
  6. }
  7. forvalue i= 1/5 {
  8.   bys stkcd:replace dummy=dummy`i' if dummy`i'==1
  9. }

  10. drop dummy1 dummy2 dummy3 dummy4 dummy5
  11. replace dummy=0 if dummy==.
复制代码

已有 1 人评分论坛币 学术水平 热心指数 收起 理由
mzdg + 5 + 4 + 4 精彩帖子

总评分: 论坛币 + 5  学术水平 + 4  热心指数 + 4   查看全部评分

按时毕业,按时睡觉。多发论文,多赚点钱。

报纸
mzdg 在职认证  学生认证  发表于 2018-12-16 00:47:35
黃河泉 发表于 2018-12-15 12:12
1. 都是六年资料吗? 2. 一定要是之型态吗?
黄老师您好,每个公司有不同的年份,只标记出形态为000111的样本。

地板
mzdg 在职认证  学生认证  发表于 2018-12-16 01:02:50
317792209 发表于 2018-12-15 13:38
最近做国泰安数据匹配,恰好遇到需要将营业收入连续两年下降的年份设定为1,其余为0,数据为面板数据。把我 ...
亲测有效,多谢啦!

7
mzdg 在职认证  学生认证  发表于 2018-12-16 01:05:34
黃河泉 发表于 2018-12-15 12:12
1. 都是六年资料吗? 2. 一定要是之型态吗?
楼下的坛友已经通过编程实现了,多谢关注哈!

8
黃河泉 在职认证  发表于 2018-12-16 11:05:57
修改 William Lisowski 的程序可得:
  1. xtset stkcd year
  2. by stkcd (year): gen x = (d==0 & F.d==0 & F2.d==0 & F3.d==1 & F4.d==1 & F5.d==1)
  3. by stkcd (year): gen z = (x==1 | L.x==1 | L2.x==1 | L3.x==1 | L4.x==1 | L5.x==1)
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
mzdg + 5 + 4 + 4 多谢黄老师,果然简洁了好多!
317792209 + 100 + 5 + 5 精彩帖子

总评分: 经验 + 100  论坛币 + 5  学术水平 + 9  热心指数 + 9   查看全部评分

9
317792209 在职认证  学生认证  发表于 2018-12-16 12:25:55
黃河泉 发表于 2018-12-16 11:05
修改 William Lisowski 的程序可得:

学习了,还是黄老师的命令简洁,没想到还可以这么用这个代码。我写的代码虽然思路一样,但显得太啰嗦了。请教黄老师,by stkcd (year)中year用括号括起来是什么含义?

10
黃河泉 在职认证  发表于 2018-12-16 12:32:15
317792209 发表于 2018-12-16 12:25
学习了,还是黄老师的命令简洁,没想到还可以这么用这个代码。我写的代码虽然思路一样,但显得太啰嗦了。 ...
1. 这程序是别人写的,不是我。2. 是根据 stkcd 分组但组内之观察值要按照 year 顺序排列!

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

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