楼主: bbsflyingsnow
1849 19

[编程问题求助] reshape解决不了 [推广有奖]

  • 7关注
  • 1粉丝

学科带头人

13%

还不是VIP/贵宾

-

威望
0
论坛币
27102 个
通用积分
58.5062
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
37487 点
帖子
997
精华
0
在线时间
1025 小时
注册时间
2008-5-18
最后登录
2024-4-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 code int 分类 long 取值1 double 取值2
  4. "000001" 5015   639     .
  5. "000001" 5020  3871     .
  6. "000001"    0  7737     1
  7. "000001" 5025  2283     .
  8. "000001" 5099   895     .
  9. "000002" 5025  2439  .182
  10. "000002" 5020  8899  .664
  11. "000002" 5015  1595  .119
  12. "000002"    0 13402     1
  13. "000002" 5099   429  .032
  14. "000002" 5010    40  .003
  15. "000004" 5020    54     .
  16. "000004" 5010     4     .
  17. "000004"    0   284     .
  18. "000004" 5015    15     .
  19. "000005" 5020     .   .52
  20. "000005"    0   885     .
  21. "000006"    0   134     .
  22. "000006" 5025   127     .
  23. "000007"    0  1087     .
  24. "000007" 5099   833 .7663
  25. "000007" 5020   254 .2337
  26. "000008"    0    24     .
  27. "000008" 5099     6   .25
  28. "000008" 5010     1 .0417
  29. "000008" 5020     9  .375
  30. "000008" 5025     8 .3333
  31. "000009" 5020   570  .134
  32. "000009" 5099  1990 .4678
  33. "000009" 5030   750 .1763
  34. "000009" 5015    80 .0188
  35. "000009"    0  4254     .
  36. "000009" 5025   855  .201
  37. "000009" 5010     9 .0021
  38. "000010"    0    30     .
  39. "000010" 5025    27     .
  40. "000011" 5030  1176     .
  41. "000011"    0  1958     .
  42. "000012" 5030  3783 .5453
  43. "000012"    0  6938     1
  44. "000012" 5099  3155 .4547
  45. "000014"    0   101     .
  46. "000016" 5020  1353     .
  47. "000016" 5015   209     .
  48. "000016" 5020  1130     .
  49. "000016" 5025    21     .
  50. "000016" 5020    34     .
  51. "000016"    0  2947     .
  52. "000016" 5099    15     .
  53. "000016" 5010    31     .
  54. "000016" 5010    14     .
  55. "000017"    0   480     .
  56. "000017" 5020    32     .
  57. "000017" 5010     6     .
  58. "000017" 5025    60     .
  59. "000019"    0   507     .
  60. "000019" 5099   297 .5858
  61. "000019" 5015    17 .0335
  62. "000019" 5030    45 .0888
  63. "000019" 5025    79 .1558
  64. "000019" 5020    69 .1361
  65. "000020" 5025    57   .13
  66. "000020" 5099   357   .81
  67. "000020" 5015    26   .06
  68. "000020"    0   441     .
  69. "000021" 5020   354 .0837
  70. "000021"    0  4231     .
  71. "000021" 5030  2088 .4935
  72. "000021" 5015    52 .0123
  73. "000021" 5025   242 .0572
  74. "000021" 5099  1495 .3533
  75. "000023"    0   264     .
  76. "000023" 5030    14     .
  77. "000023" 5025    61     .
  78. "000023" 5099    12     .
  79. "000023" 5020    66     .
  80. "000025"    0   976     .
  81. "000025" 5025   199     .
  82. "000025" 5099   635     .
  83. "000025" 5020   122     .
  84. "000026"    0  1614     .
  85. "000026" 5025   471     .
  86. "000027"    0    64     .
  87. "000028"    0  3757     .
  88. "000028" 5015    77 .0205
  89. "000028" 5099   911 .2425
  90. "000028" 5025   913  .243
  91. "000028" 5020   705 .1877
  92. "000028" 5030  1151 .3064
  93. "000029"    0  2323     .
  94. "000029" 5030   297 .1279
  95. "000029" 5020   221 .0951
  96. "000029" 5099  1542 .6638
  97. "000029" 5025   263 .1132
  98. "000030"    0    13     .
  99. "000030" 5015     2 .1538
  100. "000030" 5020     4 .3077
  101. "000030" 5025     4 .3077
  102. "000030" 5099     3 .2308
  103. "000031"    0   485     .
  104. end
复制代码


上面的数据,因为每一个公司代码(第一列)对应的变量 “分类”包含的内容不同,比如第一个公司代码,有5个分类,第二个公司代码,只有4个分类,而且分类还和第一个公司不一样。我想把他变形成下面的理想样子
公司代码  分类1(5015) 分类2(5020) 分类3(0) 分类4(5025) 分类5(5099) 分类6(5025)
"000001"  639                3871                  7737       2283                   895                 0

最后一列分类6其实是补齐的,因为这家代码公司下,根本没有这个类别的数据,所以补上了变量,并填上了0


使用命令reshap无法完成任务,gather和spread之类的一样不行


reshape wide 取值1 取值2,i( code ) j( 分类 )
(note: j = 0 5005 5010 5015 5020 5025 5030 5050 5060 5099)
values of variable 分类 not unique within code
    Your data are currently long.  You are performing a reshape wide.  You specified i(code) and
    j(分类).  There are observations within i(code) with the same value of j(分类).  In the long
    data, variables i() and j() together must uniquely identify the observations.

         long                                wide
        +---------------+                   +------------------+
        | i   j   a   b |                   | i   a1 a2  b1 b2 |
        |---------------| <--- reshape ---> |------------------|
        | 1   1   1   2 |                   | 1   1   3   2  4 |
        | 1   2   3   4 |                   | 2   5   7   6  8 |
        | 2   1   5   6 |                   +------------------+
        | 2   2   7   8 |
        +---------------+
    Type reshape error for a list of the problem variables.






二维码

扫码加我 拉你入群

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

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

关键词:reshape Shape APE RES observations

沙发
蓝色 发表于 2022-1-22 17:34:07 |只看作者 |坛友微信交流群
你的数据本身也存在问题
如:
"000016" 5020  1353     .
"000016" 5015   209     .
"000016" 5020  1130     .
"000016" 5025    21     .
"000016" 5020    34     .
"000016"    0  2947     .
"000016" 5099    15     .
"000016" 5010    31     .
"000016" 5010    14     .

同一个code,同一个分类,有两行

使用道具

藤椅
bbsflyingsnow 发表于 2022-1-22 20:33:43 |只看作者 |坛友微信交流群
蓝色 发表于 2022-1-22 17:34
你的数据本身也存在问题
如:
"000016" 5020  1353     .
噢噢噢,刚刚发现,确实如此,我检查一下先

使用道具

板凳
bbsflyingsnow 发表于 2022-1-22 20:52:25 |只看作者 |坛友微信交流群
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 A股股票代码_A_StkCd int 类别代码_CatCd str72 学历类型 int 次类别代码_SecCatCd long 人数 double 比例
  4. "000001" 5000 "博士及硕士研究生" 5015   639     .
  5. "000001" 5000 "本科"                   5020  3871     .
  6. "000001" 9000 "合计"                      .  7737     1
  7. "000001" 5000 "大专"                   5025  2283     .
  8. "000001" 5000 "中专及以下"          5099   895     .
  9. "000002" 5000 "大专"                   5025  2439  .182
  10. "000002" 5000 "本科"                   5020  8899  .664
  11. "000002" 5000 "硕士"                   5015  1595  .119
  12. "000002" 9000 "在职员工"                . 13402     1
  13. "000002" 5000 "大专以下"             5099   429  .032
  14. "000002" 5000 "博士"                   5010    40  .003
  15. "000004" 5000 "学士"                   5020    54     .
  16. "000004" 5000 "博士"                   5010     4     .
  17. "000004" 9000 "职工总数"                .   284     .
  18. "000004" 5000 "硕士"                   5015    15     .
  19. "000005" 5000 "大专以上"             5020     .   .52
  20. "000005" 9000 "职工总数"                .   885     .
  21. "000006" 9000 "职工总数"                .   134     .
  22. "000006" 5000 "大专以上学历"       5025   127     .
  23. "000007" 9000 "职工总数"                .  1087     .
  24. "000007" 5000 "大专以下"             5099   833 .7663
  25. "000007" 5000 "大专以上"             5020   254 .2337
  26. "000008" 9000 "职工总数"                .    24     .
  27. "000008" 5000 "其他学历"             5099     6   .25
  28. "000008" 5000 "博士以上学历"       5010     1 .0417
  29. "000008" 5000 "大学本科以上学历" 5020     9  .375
  30. "000008" 5000 "大学专科以上学历" 5025     8 .3333
  31. "000009" 5000 "本科"                   5020   570  .134
  32. "000009" 5000 "其他"                   5099  1990 .4678
  33. "000009" 5000 "中专"                   5030   750 .1763
  34. "000009" 5000 "硕士"                   5015    80 .0188
  35. "000009" 9000 "职工总数"                .  4254     .
  36. "000009" 5000 "大专"                   5025   855  .201
  37. "000009" 5000 "博士"                   5010     9 .0021
  38. "000010" 9000 "职工总数"                .    30     .
  39. "000010" 5000 "大专以上学历"       5025    27     .
  40. "000011" 5000 "大中专以上"          5030  1176     .
  41. "000011" 9000 "职工总数"                .  1958     .
  42. "000012" 5000 "大中专以上文化"    5030  3783 .5453
  43. "000012" 9000 "在职员工"                .  6938     1
  44. "000012" 5000 "其他学历"             5099  3155 .4547
  45. "000014" 9000 "职工总数"                .   101     .
  46. "000016" 5000 "本科以上学历"       5020  1353     .
  47. "000016" 5000 "硕士"                   5015   209     .
  48. "000016" 5000 "学士"                   5020  1130     .
  49. "000016" 5000 "专科"                   5025    21     .
  50. "000016" 5000 "本科"                   5020    34     .
  51. "000016" 9000 "职工总数"                .  2947     .
  52. "000016" 5000 "中专及以下"          5099    15     .
  53. "000016" 5000 "硕士以上"             5010    31     .
  54. "000016" 5000 "博士"                   5010    14     .
  55. "000017" 9000 "职工总数"                .   480     .
  56. "000017" 5000 "本科"                   5020    32     .
  57. "000017" 5000 "硕士以上"             5010     6     .
  58. "000017" 5000 "大专"                   5025    60     .
  59. "000019" 9000 "职工总数"                .   507     .
  60. "000019" 5000 "高中及以下学历"    5099   297 .5858
  61. "000019" 5000 "研究生及以上学历" 5015    17 .0335
  62. "000019" 5000 "中专"                   5030    45 .0888
  63. "000019" 5000 "大学专科"             5025    79 .1558
  64. "000019" 5000 "大学本科"             5020    69 .1361
  65. "000020" 5000 "大专"                   5025    57   .13
  66. "000020" 5000 "其他"                   5099   357   .81
  67. "000020" 5000 "本科以上"             5015    26   .06
  68. "000020" 9000 "职工总数"                .   441     .
  69. "000021" 5000 "本科"                   5020   354 .0837
  70. "000021" 9000 "职工总数"                .  4231     .
  71. "000021" 5000 "中专"                   5030  2088 .4935
  72. "000021" 5000 "硕士及以上"          5015    52 .0123
  73. "000021" 5000 "大专"                   5025   242 .0572
  74. "000021" 5000 "其他"                   5099  1495 .3533
  75. "000023" 9000 "职工总数"                .   264     .
  76. "000023" 5000 "中专"                   5030    14     .
  77. "000023" 5000 "大专"                   5025    61     .
  78. "000023" 5000 "博士后及研究生"    5099    12     .
  79. "000023" 5000 "本科"                   5020    66     .
  80. "000025" 9000 "职工总数"                .   976     .
  81. "000025" 5000 "专科"                   5025   199     .
  82. "000025" 5000 "其他"                   5099   635     .
  83. "000025" 5000 "大学本科"             5020   122     .
  84. "000026" 9000 "职工总数"                .  1614     .
  85. "000026" 5000 "大专及大专以上"    5025   471     .
  86. "000027" 9000 "职工总数"                .    64     .
  87. "000028" 9000 "职工总数"                .  3757     .
  88. "000028" 5000 "硕士及以上学历"    5015    77 .0205
  89. "000028" 5000 "高中及以下学历"    5099   911 .2425
  90. "000028" 5000 "大学专科"             5025   913  .243
  91. "000028" 5000 "大学本科"             5020   705 .1877
  92. "000028" 5000 "中专"                   5030  1151 .3064
  93. "000029" 9000 "职工总数"                .  2323     .
  94. "000029" 5000 "中专"                   5030   297 .1279
  95. "000029" 5000 "本科及以上"          5020   221 .0951
  96. "000029" 5000 "高中及以下"          5099  1542 .6638
  97. "000029" 5000 "大专"                   5025   263 .1132
  98. "000030" 9000 "职工总数"                .    13     .
  99. "000030" 5000 "硕士"                   5015     2 .1538
  100. "000030" 5000 "大学本科"             5020     4 .3077
  101. "000030" 5000 "大专"                   5025     4 .3077
  102. "000030" 5000 "其他"                   5099     3 .2308
  103. "000031" 9000 "职工总数"                .   485     .
  104. end
复制代码


刚刚调整了数据
reshape wide 人数 比例 ,i( A股股票代码_A_StkCd ) j( 学历类型 )s
结果还是:
values of variable 学历类型 not unique within A股股票代码_A_StkCd

发生了什么啊到底

使用道具

报纸
bbsflyingsnow 发表于 2022-1-23 08:45:30 |只看作者 |坛友微信交流群
蓝色 发表于 2022-1-22 17:34
你的数据本身也存在问题
如:
"000016" 5020  1353     .
类似数据已经调整,出现问题的原因不是重复数据,而是每个个体下面,变量不完全一样。这个怎么解决呢…… stata似乎只解决平衡数据……

使用道具

地板
黃河泉 在职认证  发表于 2022-1-23 16:21:56 |只看作者 |坛友微信交流群
bbsflyingsnow 发表于 2022-1-22 20:52
刚刚调整了数据
reshape wide 人数 比例 ,i( A股股票代码_A_StkCd ) j( 学历类型 )s
结果还是:
请用两家有代表性的企业 (A股股票代码_A_StkCd) 资料,写出你要的结果?目前看不出你要什么结果?

使用道具

7
bbsflyingsnow 发表于 2022-1-23 17:19:14 |只看作者 |坛友微信交流群
我想把他变形成下面的理想样子
公司代码   博士及研究生      本科       大专       中专及以下  硕士      合计        在职员工  大专以下   博士  学士  职工总数
"000001"      639                3871       2283      895               0         7737            0          0            0      0         0
"000002"       0                   8899       2439        0                 1595    0                13402   429       40      0        0
"000004"        0                    0              0            0              15        0                 0          0            4       54       284

也就是说,学历类型虽然每个公司名称不一样,但是我都会列为变量名,有数据的公司填数据,没有的补充为0. 比如职工总数=在职员工=合计,但是三家公司用了三个变量表达一个含义,但是这三个变量我都列上,有数据就填,没有数据就补为0.这样后期我把同类项汇总就可以计算一个总数了。 现在的问题是,系统改不成上面的样子,reshape不了,因为每家公司下面的学历类型不一样……

使用道具

8
bbsflyingsnow 发表于 2022-1-23 17:19:35 |只看作者 |坛友微信交流群
黃河泉 发表于 2022-1-23 16:21
请用两家有代表性的企业 (A股股票代码_A_StkCd) 资料,写出你要的结果?目前看不出你要什么结果?
谢谢您 帮忙看看

使用道具

9
qianchen 发表于 2022-1-23 19:14:55 |只看作者 |坛友微信交流群
clear
input str6 code int 类别代码 str72 学历 int 次类别代码 long 人数 double 比例
"000001" 5000 "博士及硕士研究生" 5015   639     .
"000001" 5000 "本科"                   5020  3871     .
"000001" 9000 "合计"                      .  7737     1
"000001" 5000 "大专"                   5025  2283     .
"000001" 5000 "中专及以下"          5099   895     .
"000002" 5000 "大专"                   5025  2439  .182
"000002" 5000 "本科"                   5020  8899  .664
"000002" 5000 "硕士"                   5015  1595  .119
"000002" 9000 "在职员工"                . 13402     1
"000002" 5000 "大专以下"             5099   429  .032
"000002" 5000 "博士"                   5010    40  .003
"000004" 5000 "学士"                   5020    54     .
"000004" 5000 "博士"                   5010     4     .
"000004" 9000 "职工总数"                .   284     .
"000004" 5000 "硕士"                   5015    15     .
"000005" 5000 "大专以上"             5020     .   .52
"000005" 9000 "职工总数"                .   885     .
"000006" 9000 "职工总数"                .   134     .
"000006" 5000 "大专以上学历"       5025   127     .
"000007" 9000 "职工总数"                .  1087     .
"000007" 5000 "大专以下"             5099   833 .7663
"000007" 5000 "大专以上"             5020   254 .2337
"000008" 9000 "职工总数"                .    24     .
"000008" 5000 "其他学历"             5099     6   .25
"000008" 5000 "博士以上学历"       5010     1 .0417
"000008" 5000 "大学本科以上学历" 5020     9  .375
"000008" 5000 "大学专科以上学历" 5025     8 .3333
"000009" 5000 "本科"                   5020   570  .134
"000009" 5000 "其他"                   5099  1990 .4678
"000009" 5000 "中专"                   5030   750 .1763
"000009" 5000 "硕士"                   5015    80 .0188
"000009" 9000 "职工总数"                .  4254     .
"000009" 5000 "大专"                   5025   855  .201
"000009" 5000 "博士"                   5010     9 .0021
"000010" 9000 "职工总数"                .    30     .
"000010" 5000 "大专以上学历"       5025    27     .
"000011" 5000 "大中专以上"          5030  1176     .
"000011" 9000 "职工总数"                .  1958     .
"000012" 5000 "大中专以上文化"    5030  3783 .5453
"000012" 9000 "在职员工"                .  6938     1
"000012" 5000 "其他学历"             5099  3155 .4547
"000014" 9000 "职工总数"                .   101     .
"000016" 5000 "本科以上学历"       5020  1353     .
"000016" 5000 "硕士"                   5015   209     .
"000016" 5000 "学士"                   5020  1130     .
"000016" 5000 "专科"                   5025    21     .
"000016" 5000 "本科"                   5020    34     .
"000016" 9000 "职工总数"                .  2947     .
"000016" 5000 "中专及以下"          5099    15     .
"000016" 5000 "硕士以上"             5010    31     .
"000016" 5000 "博士"                   5010    14     .
"000017" 9000 "职工总数"                .   480     .
"000017" 5000 "本科"                   5020    32     .
"000017" 5000 "硕士以上"             5010     6     .
"000017" 5000 "大专"                   5025    60     .
"000019" 9000 "职工总数"                .   507     .
"000019" 5000 "高中及以下学历"    5099   297 .5858
"000019" 5000 "研究生及以上学历" 5015    17 .0335
"000019" 5000 "中专"                   5030    45 .0888
"000019" 5000 "大学专科"             5025    79 .1558
"000019" 5000 "大学本科"             5020    69 .1361
"000020" 5000 "大专"                   5025    57   .13
"000020" 5000 "其他"                   5099   357   .81
"000020" 5000 "本科以上"             5015    26   .06
"000020" 9000 "职工总数"                .   441     .
"000021" 5000 "本科"                   5020   354 .0837
"000021" 9000 "职工总数"                .  4231     .
"000021" 5000 "中专"                   5030  2088 .4935
"000021" 5000 "硕士及以上"          5015    52 .0123
"000021" 5000 "大专"                   5025   242 .0572
"000021" 5000 "其他"                   5099  1495 .3533
"000023" 9000 "职工总数"                .   264     .
"000023" 5000 "中专"                   5030    14     .
"000023" 5000 "大专"                   5025    61     .
"000023" 5000 "博士后及研究生"    5099    12     .
"000023" 5000 "本科"                   5020    66     .
"000025" 9000 "职工总数"                .   976     .
"000025" 5000 "专科"                   5025   199     .
"000025" 5000 "其他"                   5099   635     .
"000025" 5000 "大学本科"             5020   122     .
"000026" 9000 "职工总数"                .  1614     .
"000026" 5000 "大专及大专以上"    5025   471     .
"000027" 9000 "职工总数"                .    64     .
"000028" 9000 "职工总数"                .  3757     .
"000028" 5000 "硕士及以上学历"    5015    77 .0205
"000028" 5000 "高中及以下学历"    5099   911 .2425
"000028" 5000 "大学专科"             5025   913  .243
"000028" 5000 "大学本科"             5020   705 .1877
"000028" 5000 "中专"                   5030  1151 .3064
"000029" 9000 "职工总数"                .  2323     .
"000029" 5000 "中专"                   5030   297 .1279
"000029" 5000 "本科及以上"          5020   221 .0951
"000029" 5000 "高中及以下"          5099  1542 .6638
"000029" 5000 "大专"                   5025   263 .1132
"000030" 9000 "职工总数"                .    13     .
"000030" 5000 "硕士"                   5015     2 .1538
"000030" 5000 "大学本科"             5020     4 .3077
"000030" 5000 "大专"                   5025     4 .3077
"000030" 5000 "其他"                   5099     3 .2308
"000031" 9000 "职工总数"                .   485     .
end

drop 类别代码 次类别代码
sort code 学历
reshape wide 人数 比例,i(code) j(学历) string
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
bbsflyingsnow + 5 + 5 + 5 + 5 精彩帖子

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

使用道具

10
DΘstinyじò 发表于 2022-1-23 19:56:14 |只看作者 |坛友微信交流群
尝试
  1. reshape wide 人数 比例 ,i(A股股票代码_A_StkCd 次类别代码_SecCatCd 类别代码_CatCd) j(学历类型) s
复制代码
建议还是先整理 学历类型这个变量,把同一意思的不同表述统一标准。

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 17:39