1120 9

[国际经济学] 【stata代码求助】如何标记出口退出与出口恢复? [推广有奖]

  • 0关注
  • 2粉丝

已卖:5份资源

讲师

74%

还不是VIP/贵宾

-

威望
0
论坛币
2032 个
通用积分
205.0316
学术水平
22 点
热心指数
29 点
信用等级
18 点
经验
4433 点
帖子
186
精华
0
在线时间
987 小时
注册时间
2016-12-24
最后登录
2025-3-31

楼主
我是工作狂2009 发表于 2022-11-27 10:34:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
【stata代码求助】如何标记出口退出与出口恢复?

出口退出与出口恢复的定义如下:
出口退出:如果出口贸易持续两年及以上,则将该连续贸易段结束后的第一年设定为出口退出年份。
出口恢复:如果出口贸易曾经属于出口退出,又在其后的某一年重新开始出口,则将重新出口的年份设定为出口恢复年份。

样本数据及想要的结果如下:
  1. [CODE]
  2. * Example generated by -dataex-. For more info, type help dataex
  3. clear
  4. input long id int year float(x stop recover)
  5. 1 2000         . 0 0
  6. 1 2001         . 0 0
  7. 1 2002         . 0 0
  8. 1 2003         . 0 0
  9. 1 2004         . 0 0
  10. 1 2005         . 0 0
  11. 1 2006         . 0 0
  12. 1 2007         . 0 0
  13. 1 2008      3572 0 0
  14. 1 2009   1135977 0 0
  15. 1 2010   1797281 0 0
  16. 1 2011         . 1 0
  17. 1 2012         . 0 0
  18. 1 2013         . 0 0
  19. 2 2000 103442000 0 0
  20. 2 2001  89558200 0 0
  21. 2 2002  63018932 0 0
  22. 2 2003  22986942 0 0
  23. 2 2004         . 1 0
  24. 2 2005         . 0 0
  25. 2 2006         . 0 0
  26. 2 2007    761555 0 1
  27. 2 2008         . 0 0
  28. 2 2009         . 0 0
  29. 2 2010         . 0 0
  30. 2 2011         . 0 0
  31. 2 2012         . 0 0
  32. 2 2013         . 0 0
  33. 3 2000         . 0 0
  34. 3 2001         . 0 0
  35. 3 2002         . 0 0
  36. 3 2003         . 0 0
  37. 3 2004         . 0 0
  38. 3 2005         . 0 0
  39. 3 2006         . 0 0
  40. 3 2007     69358 0 0
  41. 3 2008         . 0 0
  42. 3 2009         . 0 0
  43. 3 2010         . 0 0
  44. 3 2011         . 0 0
  45. 3 2012    542038 0 0
  46. 3 2013    302777 0 0
  47. end
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata generated generate Recover

沙发
我是工作狂2009 发表于 2022-11-27 10:46:21
@黃河泉

藤椅
黃河泉 在职认证  发表于 2022-11-27 12:32:55
试试
  1. gen w1 = 0
  2. replace w1 = 1 if (x==.)&(x[_n-1]!=.)&(x[_n-2]!=.)
  3. gen w2 = 0
  4. bys id (year): gen tem = sum(w1)
  5. replace w2 = 1 if (x!=.)&(tem==1)
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
我是工作狂2009 + 5 + 3 + 3 + 3 热心帮助其他会员

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

板凳
我是工作狂2009 发表于 2022-11-27 15:54:23
黃河泉 发表于 2022-11-27 12:32
试试
感谢黄老师回复!
您解决了我的大部分问题!
还有一个小问题是:
我希望将重新出口的第一年的年份设定为出口恢复年份,恢复第二年不再赋值为1时应该怎么办?
谢谢黄老师!

报纸
黃河泉 在职认证  发表于 2022-11-27 18:49:02
我是工作狂2009 发表于 2022-11-27 15:54
感谢黄老师回复!
您解决了我的大部分问题!
还有一个小问题是:
不懂你的意思,请用你的资料说明。

地板
我是工作狂2009 发表于 2022-11-28 08:59:26
黃河泉 发表于 2022-11-27 18:49
不懂你的意思,请用你的资料说明。
按照老师的方法计算后,出口恢复的第二年仍然赋值为1,见recover的结果。
但是,只想标记出口恢复的当年,往后年份不想标记。也就是说,出口恢复的第二年开始不再赋值为1,应该怎么办?见recover1和recover的结果差异。
  1. [CODE]
  2. * Example generated by -dataex-. For more info, type help dataex
  3. clear
  4. input long id int year float(export exit recover recover1)
  5. 1 2000       . 0 0 0
  6. 1 2001       . 0 0 0
  7. 1 2002       . 0 0 0
  8. 1 2003       . 0 0 0
  9. 1 2004 1646180 0 0 0
  10. 1 2005 3058597 0 0 0
  11. 1 2006 5122347 0 0 0
  12. 1 2007       . 1 0 0
  13. 1 2008 2248970 0 1 1
  14. 1 2009  937312 0 1 0
  15. 1 2010 1599206 0 1 0
  16. 1 2011       . 1 0 0
  17. 1 2012       . 0 0 0
  18. 1 2013       . 0 0 0
  19. 2 2000 2429505 0 0 0
  20. 2 2001 1285394 0 0 0
  21. 2 2002       . 1 0 0
  22. 2 2003 1895245 0 1 1
  23. 2 2004 1290170 0 1 0
  24. 2 2005       . 1 0 0
  25. 2 2006 1294748 0 1 1
  26. 2 2007       . 1 0 0
  27. 2 2008 1186511 0 1 1
  28. 2 2009  977644 0 1 0
  29. 2 2010 1299771 0 1 0
  30. 2 2011       . 1 0 0
  31. 2 2012       . 0 0 0
  32. 2 2013       . 0 0 0
  33. 3 2000       . 0 0 0
  34. 3 2001       . 0 0 0
  35. 3 2002   81220 0 0 0
  36. 3 2003  222960 0 0 0
  37. 3 2004       . 1 0 0
  38. 3 2005 1166628 0 1 1
  39. 3 2006  520308 0 1 0
  40. 3 2007       . 1 0 0
  41. 3 2008       . 0 0 0
  42. 3 2009   17213 0 1 1
  43. 3 2010 1414333 0 1 0
  44. 3 2011       . 1 0 0
  45. 3 2012       . 0 0 0
  46. 3 2013       . 0 0 0
  47. end
复制代码
[/code]

7
黃河泉 在职认证  发表于 2022-11-28 16:52:31
我是工作狂2009 发表于 2022-11-28 08:59
按照老师的方法计算后,出口恢复的第二年仍然赋值为1,见recover的结果。
但是,只想标记出口恢复的当年 ...
请 ssc install tsspell, 试试
  1. * Example generated by -dataex-. For more info, type help dataex
  2. clear
  3. input long id int year float(export exit recover recover1)
  4. 1 2000       . 0 0 0
  5. 1 2001       . 0 0 0
  6. 1 2002       . 0 0 0
  7. 1 2003       . 0 0 0
  8. 1 2004 1646180 0 0 0
  9. 1 2005 3058597 0 0 0
  10. 1 2006 5122347 0 0 0
  11. 1 2007       . 1 0 0
  12. 1 2008 2248970 0 1 1
  13. 1 2009  937312 0 1 0
  14. 1 2010 1599206 0 1 0
  15. 1 2011       . 1 0 0
  16. 1 2012       . 0 0 0
  17. 1 2013       . 0 0 0
  18. 2 2000 2429505 0 0 0
  19. 2 2001 1285394 0 0 0
  20. 2 2002       . 1 0 0
  21. 2 2003 1895245 0 1 1
  22. 2 2004 1290170 0 1 0
  23. 2 2005       . 1 0 0
  24. 2 2006 1294748 0 1 1
  25. 2 2007       . 1 0 0
  26. 2 2008 1186511 0 1 1
  27. 2 2009  977644 0 1 0
  28. 2 2010 1299771 0 1 0
  29. 2 2011       . 1 0 0
  30. 2 2012       . 0 0 0
  31. 2 2013       . 0 0 0
  32. 3 2000       . 0 0 0
  33. 3 2001       . 0 0 0
  34. 3 2002   81220 0 0 0
  35. 3 2003  222960 0 0 0
  36. 3 2004       . 1 0 0
  37. 3 2005 1166628 0 1 1
  38. 3 2006  520308 0 1 0
  39. 3 2007       . 1 0 0
  40. 3 2008       . 0 0 0
  41. 3 2009   17213 0 1 1
  42. 3 2010 1414333 0 1 0
  43. 3 2011       . 1 0 0
  44. 3 2012       . 0 0 0
  45. 3 2013       . 0 0 0
  46. end

  47. gen w1 = 0
  48. replace w1 = 1 if (export==.)&(export[_n-1]!=.)&(export[_n-2]!=.)
  49. gen w2 = 0
  50. bys id (year): gen tem = sum(w1)
  51. replace w2 = 1 if (export!=.)&(tem==1)

  52. xtset id year
  53. tsspell recover
  54. gen w3 = (recover*_seq==1)
  55. *assert recover1 == w3
复制代码

8
qgmyysj 在职认证  发表于 2022-11-29 07:23:22
非常好的问题

9
我是工作狂2009 发表于 2022-12-1 11:16:12
黃河泉 发表于 2022-11-28 16:52
请 ssc install tsspell, 试试
谢谢老师

10
三江鸿 发表于 2022-12-2 10:37:03
点个赞感谢分享

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 12:56