楼主: ming4733733
1280 8

[面板数据求助] stata高手请进,需要您的帮助! [推广有奖]

已卖:1899份资源

教授

4%

还不是VIP/贵宾

-

威望
0
论坛币
70785 个
通用积分
837.1593
学术水平
74 点
热心指数
101 点
信用等级
76 点
经验
34123 点
帖子
333
精华
0
在线时间
1717 小时
注册时间
2007-12-26
最后登录
2026-1-9

楼主
ming4733733 在职认证  发表于 2018-6-23 12:25:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
iddatedum_date

1

2000


1

2001


1

2002

1

1

2003

1

2004

2

2000


2

2001


2

2002


2

2003

1

2

2004


  1. clear
  2. input byte id int date byte dum_date
  3. 1 2000 .
  4. 1 2001 .
  5. 1 2002 1
  6. 1 2003 .
  7. 1 2004 .
  8. 2 2000 .
  9. 2 2001 .
  10. 2 2002 .
  11. 2 2003 1
  12. 2 2004 .
  13. end
复制代码



如表,对于个体1,2002年及之前为dum_date为0,2002年之后为1; 对于个体2,2003年及以前为0,2003年之后为1。谢谢大神!
二维码

扫码加我 拉你入群

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

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


回帖推荐

dlut123 发表于6楼  查看完整内容

forvalues v =1(1)4 { forvalues year = 2000/2006 { replace dum_date=1 if date >= 2001+`v' & id == `v' } } 多整了两个id和date,看的更清楚,不知道是否理解正确:id增加1,date也增加1来设置虚拟变量。

黃河泉 发表于8楼  查看完整内容

试试结果为

沙发
也是晴天 在职认证  学生认证  发表于 2018-6-23 13:46:29
replace dum_date=1 if dum_date==""

藤椅
ming4733733 在职认证  发表于 2018-6-23 14:04:02
也是晴天 发表于 2018-6-23 13:46
replace dum_date=1 if dum_date==""
不好意思,开始问题没有表达清楚。

板凳
黃河泉 在职认证  发表于 2018-6-23 14:51:24
你若要问程序,永远附上资料;若要附上资料,永远用 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

报纸
dlut123 发表于 2018-6-23 21:50:19
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte id int date byte dum_date
  4. 1 2000 0
  5. 1 2001 0
  6. 1 2002 0
  7. 1 2003 0
  8. 1 2004 0
  9. 1 2005 0
  10. 1 2006 0
  11. 2 2000 0
  12. 2 2001 0
  13. 2 2002 0
  14. 2 2003 0
  15. 2 2004 0
  16. 2 2005 0
  17. 2 2006 0
  18. 3 2000 0
  19. 3 2001 0
  20. 3 2002 0
  21. 3 2003 0
  22. 3 2004 0
  23. 3 2005 0
  24. 3 2006 0
  25. 4 2000 0
  26. 4 2001 0
  27. 4 2002 0
  28. 4 2003 0
  29. 4 2004 0
  30. 4 2005 0
  31. 4 2006 0
  32. end
复制代码


forvalues v =1(1)4  {
  dis `v'
  forvalues year = 2000/2006  {
    replace dum_date=1 if date >= 2001+`v' & id == `v'
  }
}  

结果如下:

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte id int date byte dum_date
  4. 1 2000 0
  5. 1 2001 0
  6. 1 2002 1
  7. 1 2003 1
  8. 1 2004 1
  9. 1 2005 1
  10. 1 2006 1
  11. 2 2000 0
  12. 2 2001 0
  13. 2 2002 0
  14. 2 2003 1
  15. 2 2004 1
  16. 2 2005 1
  17. 2 2006 1
  18. 3 2000 0
  19. 3 2001 0
  20. 3 2002 0
  21. 3 2003 0
  22. 3 2004 1
  23. 3 2005 1
  24. 3 2006 1
  25. 4 2000 0
  26. 4 2001 0
  27. 4 2002 0
  28. 4 2003 0
  29. 4 2004 0
  30. 4 2005 1
  31. 4 2006 1
  32. end
复制代码



地板
dlut123 发表于 2018-6-23 21:56:44
forvalues v =1(1)4  {
    forvalues year = 2000/2006  {
      replace dum_date=1 if date >= 2001+`v' & id == `v'
    }
  }  

多整了两个id和date,看的更清楚,不知道是否理解正确:id增加1,date也增加1来设置虚拟变量。

7
天南水北 发表于 2018-6-24 00:38:17
你想说?
gen dum_date=date>=(id+2002)

8
黃河泉 在职认证  发表于 2018-6-25 08:06:16
试试
  1. gen d1 = dum_date == 1
  2. bys id (date): gen d2 = sum(d1)
复制代码
结果为
  1. . list

  2.      +--------------------------------+
  3.      | id   date   dum_date   d1   d2 |
  4.      |--------------------------------|
  5.   1. |  1   2000          .    0    0 |
  6.   2. |  1   2001          .    0    0 |
  7.   3. |  1   2002          1    1    1 |
  8.   4. |  1   2003          .    0    1 |
  9.   5. |  1   2004          .    0    1 |
  10.      |--------------------------------|
  11.   6. |  2   2000          .    0    0 |
  12.   7. |  2   2001          .    0    0 |
  13.   8. |  2   2002          .    0    0 |
  14.   9. |  2   2003          1    1    1 |
  15. 10. |  2   2004          .    0    1 |
  16.      +--------------------------------+
复制代码

9
ming4733733 在职认证  发表于 2018-6-25 09:20:01
黃河泉 发表于 2018-6-25 08:06
试试结果为
谢谢黄老师的解答。

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

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