楼主: LSY279205
3083 9

[数据管理求助] 请问如何分组生成虚拟变量 [推广有奖]

  • 1关注
  • 0粉丝

大专生

58%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
1.0500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9087 点
帖子
12
精华
0
在线时间
100 小时
注册时间
2016-3-9
最后登录
2024-7-8

楼主
LSY279205 发表于 2021-8-6 13:15:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. For more info, type help dataex
  2. clear
  3. input float id str19 证券代码 str8 date float(qua treat)
  4. 1 "000001" "20190331" 236 .
  5. 1 "000001" "20190630" 237 .
  6. 1 "000001" "20190930" 238 .
  7. 1 "000001" "20191231" 239 .
  8. 1 "000001" "20200331" 240 .
  9. 1 "000001" "20200630" 241 .
  10. 1 "000001" "20200930" 242 .
  11. 1 "000001" "20201231" 243 1
  12. 1 "000001" "20210331" 244 .
  13. 1 "000001" "20210630" 245 .
  14. 2 "000002" "20190331" 236 .
  15. 2 "000002" "20190630" 237 .
  16. 2 "000002" "20190930" 238 .
  17. 2 "000002" "20191231" 239 .
  18. 2 "000002" "20200331" 240 .
  19. 2 "000002" "20200630" 241 .
  20. 2 "000002" "20200930" 242 .
  21. 2 "000002" "20201231" 243 1
  22. 2 "000002" "20210331" 244 .
  23. 2 "000002" "20210630" 245 .
  24. 8 "000008" "20190331" 236 .
  25. 8 "000008" "20190630" 237 .
  26. 8 "000008" "20190930" 238 .
  27. 8 "000008" "20191231" 239 .
  28. 8 "000008" "20200331" 240 .
  29. 8 "000008" "20200630" 241 .
  30. 8 "000008" "20200930" 242 .
  31. 8 "000008" "20201231" 243 .
  32. 8 "000008" "20210331" 244 .
  33. 8 "000008" "20210630" 245 .
  34. end
  35. format %tq qua
复制代码

目前想做did模型,因此需要生成虚拟变量,展示出了部分面板数据,某些股票在2020年末的变量是1,某些是0。现在想让2020年末的变量是1对应股票所有期数的虚拟变量取值均为1,而2020年末的变量是0的股票所有期数的虚拟变量取值均为0,请问该怎么做呢?

二维码

扫码加我 拉你入群

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

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

关键词:虚拟变量 generated generate example format

沙发
zdlspace 学生认证  发表于 2021-8-6 14:26:50
没读懂你的意思,是不是这样
  1. clear
  2. input float id str19 证券代码 str8 date float(qua treat)
  3. 1 "000001" "20190331" 236 .
  4. 1 "000001" "20190630" 237 .
  5. 1 "000001" "20190930" 238 .
  6. 1 "000001" "20191231" 239 .
  7. 1 "000001" "20200331" 240 .
  8. 1 "000001" "20200630" 241 .
  9. 1 "000001" "20200930" 242 .
  10. 1 "000001" "20201231" 243 1
  11. 1 "000001" "20210331" 244 .
  12. 1 "000001" "20210630" 245 .
  13. 2 "000002" "20190331" 236 .
  14. 2 "000002" "20190630" 237 .
  15. 2 "000002" "20190930" 238 .
  16. 2 "000002" "20191231" 239 .
  17. 2 "000002" "20200331" 240 .
  18. 2 "000002" "20200630" 241 .
  19. 2 "000002" "20200930" 242 .
  20. 2 "000002" "20201231" 243 1
  21. 2 "000002" "20210331" 244 .
  22. 2 "000002" "20210630" 245 .
  23. 8 "000008" "20190331" 236 .
  24. 8 "000008" "20190630" 237 .
  25. 8 "000008" "20190930" 238 .
  26. 8 "000008" "20191231" 239 .
  27. 8 "000008" "20200331" 240 .
  28. 8 "000008" "20200630" 241 .
  29. 8 "000008" "20200930" 242 .
  30. 8 "000008" "20201231" 243 .
  31. 8 "000008" "20210331" 244 .
  32. 8 "000008" "20210630" 245 .
  33. end
  34. format %tq qua

  35. drop treat
  36. numdate d date1=date,pattern(YMD)
  37. gen treat=(date1>=`=td(31dec2020)')


  38. . list

  39.      +-------------------------------------------------------+
  40.      | id   证券代码       date      qua       date1   treat |
  41.      |-------------------------------------------------------|
  42.   1. |  1     000001   20190331   2019q1   31mar2019       0 |
  43.   2. |  1     000001   20190630   2019q2   30jun2019       0 |
  44.   3. |  1     000001   20190930   2019q3   30sep2019       0 |
  45.   4. |  1     000001   20191231   2019q4   31dec2019       0 |
  46.   5. |  1     000001   20200331   2020q1   31mar2020       0 |
  47.      |-------------------------------------------------------|
  48.   6. |  1     000001   20200630   2020q2   30jun2020       0 |
  49.   7. |  1     000001   20200930   2020q3   30sep2020       0 |
  50.   8. |  1     000001   20201231   2020q4   31dec2020       1 |
  51.   9. |  1     000001   20210331   2021q1   31mar2021       1 |
  52. 10. |  1     000001   20210630   2021q2   30jun2021       1 |
  53.      |-------------------------------------------------------|
  54. 11. |  2     000002   20190331   2019q1   31mar2019       0 |
  55. 12. |  2     000002   20190630   2019q2   30jun2019       0 |
  56. 13. |  2     000002   20190930   2019q3   30sep2019       0 |
  57. 14. |  2     000002   20191231   2019q4   31dec2019       0 |
  58. 15. |  2     000002   20200331   2020q1   31mar2020       0 |
  59.      |-------------------------------------------------------|
  60. 16. |  2     000002   20200630   2020q2   30jun2020       0 |
  61. 17. |  2     000002   20200930   2020q3   30sep2020       0 |
  62. 18. |  2     000002   20201231   2020q4   31dec2020       1 |
  63. 19. |  2     000002   20210331   2021q1   31mar2021       1 |
  64. 20. |  2     000002   20210630   2021q2   30jun2021       1 |
  65.      |-------------------------------------------------------|
  66. 21. |  8     000008   20190331   2019q1   31mar2019       0 |
  67. 22. |  8     000008   20190630   2019q2   30jun2019       0 |
  68. 23. |  8     000008   20190930   2019q3   30sep2019       0 |
  69. 24. |  8     000008   20191231   2019q4   31dec2019       0 |
  70. 25. |  8     000008   20200331   2020q1   31mar2020       0 |
  71.      |-------------------------------------------------------|
  72. 26. |  8     000008   20200630   2020q2   30jun2020       0 |
  73. 27. |  8     000008   20200930   2020q3   30sep2020       0 |
  74. 28. |  8     000008   20201231   2020q4   31dec2020       1 |
  75. 29. |  8     000008   20210331   2021q1   31mar2021       1 |
  76. 30. |  8     000008   20210630   2021q2   30jun2021       1 |
  77.      +-------------------------------------------------------+
复制代码

藤椅
LSY279205 发表于 2021-8-6 17:09:58
zdlspace 发表于 2021-8-6 14:26
没读懂你的意思,是不是这样
感谢帮忙看看,按我的想法,代码1和2对应的所有treat都为1,代码8对应的treat都为0,

板凳
LSY279205 发表于 2021-8-6 17:17:33
zdlspace 发表于 2021-8-6 14:26
没读懂你的意思,是不是这样
有一个变量没有写出来,就是季度的披露情况。如果一家公司2020年底披露了就记treat=1,但目前treat对应公司的观测值只在2020q4时等于1,但我想把这家公司所有季度的treat都记为1,不知道用什么方法·。

报纸
zdlspace 学生认证  发表于 2021-8-6 17:39:07
LSY279205 发表于 2021-8-6 17:17
有一个变量没有写出来,就是季度的披露情况。如果一家公司2020年底披露了就记treat=1,但目前treat对应公司 ...
把数据发过来,包括你说的季度,另外把你要的结果写在最后一列,我实在读不懂你究竟要做什么

地板
zdlspace 学生认证  发表于 2021-8-6 17:43:12
LSY279205 发表于 2021-8-6 17:17
有一个变量没有写出来,就是季度的披露情况。如果一家公司2020年底披露了就记treat=1,但目前treat对应公司 ...
是这样吗?
  1.          clear
  2. input float id str19 证券代码 str8 date float(qua treat)
  3. 1 "000001" "20190331" 236 .
  4. 1 "000001" "20190630" 237 .
  5. 1 "000001" "20190930" 238 .
  6. 1 "000001" "20191231" 239 .
  7. 1 "000001" "20200331" 240 .
  8. 1 "000001" "20200630" 241 .
  9. 1 "000001" "20200930" 242 .
  10. 1 "000001" "20201231" 243 1
  11. 1 "000001" "20210331" 244 .
  12. 1 "000001" "20210630" 245 .
  13. 2 "000002" "20190331" 236 .
  14. 2 "000002" "20190630" 237 .
  15. 2 "000002" "20190930" 238 .
  16. 2 "000002" "20191231" 239 .
  17. 2 "000002" "20200331" 240 .
  18. 2 "000002" "20200630" 241 .
  19. 2 "000002" "20200930" 242 .
  20. 2 "000002" "20201231" 243 1
  21. 2 "000002" "20210331" 244 .
  22. 2 "000002" "20210630" 245 .
  23. 8 "000008" "20190331" 236 .
  24. 8 "000008" "20190630" 237 .
  25. 8 "000008" "20190930" 238 .
  26. 8 "000008" "20191231" 239 .
  27. 8 "000008" "20200331" 240 .
  28. 8 "000008" "20200630" 241 .
  29. 8 "000008" "20200930" 242 .
  30. 8 "000008" "20201231" 243 .
  31. 8 "000008" "20210331" 244 .
  32. 8 "000008" "20210630" 245 .
  33. end
  34. format %tq qua

  35. drop treat
  36. numdate d date1=date,pattern(YMD)
  37. gen treat=(date1==`=td(31dec2020)')

  38. . list

  39.      +-------------------------------------------------------+
  40.      | id   证券代码       date      qua       date1   treat |
  41.      |-------------------------------------------------------|
  42.   1. |  1     000001   20190331   2019q1   31mar2019       0 |
  43.   2. |  1     000001   20190630   2019q2   30jun2019       0 |
  44.   3. |  1     000001   20190930   2019q3   30sep2019       0 |
  45.   4. |  1     000001   20191231   2019q4   31dec2019       0 |
  46.   5. |  1     000001   20200331   2020q1   31mar2020       0 |
  47.      |-------------------------------------------------------|
  48.   6. |  1     000001   20200630   2020q2   30jun2020       0 |
  49.   7. |  1     000001   20200930   2020q3   30sep2020       0 |
  50.   8. |  1     000001   20201231   2020q4   31dec2020       1 |
  51.   9. |  1     000001   20210331   2021q1   31mar2021       0 |
  52. 10. |  1     000001   20210630   2021q2   30jun2021       0 |
  53.      |-------------------------------------------------------|
  54. 11. |  2     000002   20190331   2019q1   31mar2019       0 |
  55. 12. |  2     000002   20190630   2019q2   30jun2019       0 |
  56. 13. |  2     000002   20190930   2019q3   30sep2019       0 |
  57. 14. |  2     000002   20191231   2019q4   31dec2019       0 |
  58. 15. |  2     000002   20200331   2020q1   31mar2020       0 |
  59.      |-------------------------------------------------------|
  60. 16. |  2     000002   20200630   2020q2   30jun2020       0 |
  61. 17. |  2     000002   20200930   2020q3   30sep2020       0 |
  62. 18. |  2     000002   20201231   2020q4   31dec2020       1 |
  63. 19. |  2     000002   20210331   2021q1   31mar2021       0 |
  64. 20. |  2     000002   20210630   2021q2   30jun2021       0 |
  65.      |-------------------------------------------------------|
  66. 21. |  8     000008   20190331   2019q1   31mar2019       0 |
  67. 22. |  8     000008   20190630   2019q2   30jun2019       0 |
  68. 23. |  8     000008   20190930   2019q3   30sep2019       0 |
  69. 24. |  8     000008   20191231   2019q4   31dec2019       0 |
  70. 25. |  8     000008   20200331   2020q1   31mar2020       0 |
  71.      |-------------------------------------------------------|
  72. 26. |  8     000008   20200630   2020q2   30jun2020       0 |
  73. 27. |  8     000008   20200930   2020q3   30sep2020       0 |
  74. 28. |  8     000008   20201231   2020q4   31dec2020       1 |
  75. 29. |  8     000008   20210331   2021q1   31mar2021       0 |
  76. 30. |  8     000008   20210630   2021q2   30jun2021       0 |
  77.      +-------------------------------------------------------+
复制代码

7
zdlspace 学生认证  发表于 2021-8-6 17:44:14
  1. gen treat=(date1==`=td(31dec2020)')
复制代码


你把最后一行代码改成这样,看是不是你想要的

8
zdlspace 学生认证  发表于 2021-8-6 17:45:08
  1. . list

  2.      +-------------------------------------------------------+
  3.      | id   证券代码       date      qua       date1   treat |
  4.      |-------------------------------------------------------|
  5.   1. |  1     000001   20190331   2019q1   31mar2019       0 |
  6.   2. |  1     000001   20190630   2019q2   30jun2019       0 |
  7.   3. |  1     000001   20190930   2019q3   30sep2019       0 |
  8.   4. |  1     000001   20191231   2019q4   31dec2019       0 |
  9.   5. |  1     000001   20200331   2020q1   31mar2020       0 |
  10.      |-------------------------------------------------------|
  11.   6. |  1     000001   20200630   2020q2   30jun2020       0 |
  12.   7. |  1     000001   20200930   2020q3   30sep2020       0 |
  13.   8. |  1     000001   20201231   2020q4   31dec2020       1 |
  14.   9. |  1     000001   20210331   2021q1   31mar2021       0 |
  15. 10. |  1     000001   20210630   2021q2   30jun2021       0 |
  16.      |-------------------------------------------------------|
  17. 11. |  2     000002   20190331   2019q1   31mar2019       0 |
  18. 12. |  2     000002   20190630   2019q2   30jun2019       0 |
  19. 13. |  2     000002   20190930   2019q3   30sep2019       0 |
  20. 14. |  2     000002   20191231   2019q4   31dec2019       0 |
  21. 15. |  2     000002   20200331   2020q1   31mar2020       0 |
  22.      |-------------------------------------------------------|
  23. 16. |  2     000002   20200630   2020q2   30jun2020       0 |
  24. 17. |  2     000002   20200930   2020q3   30sep2020       0 |
  25. 18. |  2     000002   20201231   2020q4   31dec2020       1 |
  26. 19. |  2     000002   20210331   2021q1   31mar2021       0 |
  27. 20. |  2     000002   20210630   2021q2   30jun2021       0 |
  28.      |-------------------------------------------------------|
  29. 21. |  8     000008   20190331   2019q1   31mar2019       0 |
  30. 22. |  8     000008   20190630   2019q2   30jun2019       0 |
  31. 23. |  8     000008   20190930   2019q3   30sep2019       0 |
  32. 24. |  8     000008   20191231   2019q4   31dec2019       0 |
  33. 25. |  8     000008   20200331   2020q1   31mar2020       0 |
  34.      |-------------------------------------------------------|
  35. 26. |  8     000008   20200630   2020q2   30jun2020       0 |
  36. 27. |  8     000008   20200930   2020q3   30sep2020       0 |
  37. 28. |  8     000008   20201231   2020q4   31dec2020       1 |
  38. 29. |  8     000008   20210331   2021q1   31mar2021       0 |
  39. 30. |  8     000008   20210630   2021q2   30jun2021       0 |
  40.      +-------------------------------------------------------+
复制代码

9
LSY279205 发表于 2021-8-6 18:09:13
zdlspace 发表于 2021-8-6 17:44
你把最后一行代码改成这样,看是不是你想要的
这个问题的确不太好描述,我换个说法试试。我想把股票分为两类,分类依据就是2020年底的treat是否等于1。目前已经得到treat了,之后新建一个虚拟变量treat1作为驱风者两类股票的虚拟变量,使2020年底treat=1的股票对应的treat1都等于1,也就是如下所示的结果。可以说treat是分类依据(是已知的),而treat1是分类结果(也就是想要得到的),您看有什么方法呢?
  1. * Example generated by -dataex-. For more info, type help dataex
  2. clear
  3. input float id str19 证券代码 float(date1 qua treat treat1)
  4. 1 "000001" 21639 236 . 1
  5. 1 "000001" 21730 237 . 1
  6. 1 "000001" 21822 238 . 1
  7. 1 "000001" 21914 239 . 1
  8. 1 "000001" 22005 240 . 1
  9. 1 "000001" 22096 241 . 1
  10. 1 "000001" 22188 242 . 1
  11. 1 "000001" 22280 243 1 1
  12. 1 "000001" 22370 244 . 1
  13. 1 "000001" 22461 245 . 1
  14. 2 "000002" 21639 236 . 1
  15. 2 "000002" 21730 237 . 1
  16. 2 "000002" 21822 238 . 1
  17. 2 "000002" 21914 239 . 1
  18. 2 "000002" 22005 240 . 1
  19. 2 "000002" 22096 241 . 1
  20. 2 "000002" 22188 242 . 1
  21. 2 "000002" 22280 243 1 1
  22. 2 "000002" 22370 244 . 1
  23. 2 "000002" 22461 245 . 1
  24. 8 "000008" 21639 236 . 0
  25. 8 "000008" 21730 237 . 0
  26. 8 "000008" 21822 238 . 0
  27. 8 "000008" 21914 239 . 0
  28. 8 "000008" 22005 240 . 0
  29. 8 "000008" 22096 241 . 0
  30. 8 "000008" 22188 242 . 0
  31. 8 "000008" 22280 243 . 0
  32. 8 "000008" 22370 244 . 0
  33. 8 "000008" 22461 245 . 0
  34. end
  35. format %td date1
  36. format %tq qua
复制代码





10
LSY279205 发表于 2021-8-6 18:37:08
zdlspace 发表于 2021-8-6 17:43
是这样吗?
ex1.png
我想把股票分为两类,现在有两个变量,treat是已知的,相当于分类依据,treat1是我想得到的分类结果。如果某一股票在2020q4的treat=1,那么我想使该股票对应的treat1都是1,也就是想得到如图所示的结果,您看要怎么做?

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

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