楼主: 圈圈侠0404
4374 7

[编程问题求助] stata 数据一对多匹配 循环计算 重新赋值 [推广有奖]

  • 1关注
  • 0粉丝

高中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
145 点
帖子
8
精华
0
在线时间
49 小时
注册时间
2020-5-3
最后登录
2022-5-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
    在下有一个数据集希望实现以下三个小目标,自己的编程水平有限,望各路大神指教!感恩!
    最终目标:在原数据集里为每一个id根据条件匹配到子样本(一对多匹配),并计算子样本的某一变量的加总值sum,最后重新将sum(var)重新赋值给每一个id。
  • 目标一——样本匹配:待匹配的变量是id, 匹配条件是location,legalform,size_ms这个三个变量的数值。假设需要为id为1的样本匹配对对应的样本,目标即为寻找跟id为1的样本 有相同的location,legal form,size_ms的值的样本。

  • 目标二——计算所匹配的样本的某一变量的加总值:根据匹配的样本结果,计算与id为1的相匹配的样本所对应的a_SocialRespon3的加总值sum:即,一对多匹配,并计算多个匹配对象的sum(a_SocialRespon3),sum( a_Management3) ,sum(a_FoodSafety)这三个变量的各自的加总值。
  • 目标三———循环。使得每一个id都可以按照上面的步骤循环计算出相应的值。

匹配数据集和待匹配数据集是同一个数据集

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input int(id year) byte(location legalform size_ms) float(a_SocialRespon3 a_Management3 a_FoodSafety)
  4. 1 2014 14 4 1 0 0 0
  5. 1 2015 14 4 1 0 0 0
  6. 1 2016 14 4 1 0 0 2
  7. 1 2017 14 4 1 0 0 2
  8. 1 2018 14 4 1 0 0 2
  9. 1 2019 14 4 1 0 0 2
  10. 2 2013  1 4 1 0 0 0
  11. 2 2014  1 4 1 0 0 0
  12. 2 2015  1 4 1 0 0 0
  13. 2 2016  1 4 1 0 0 1
  14. 2 2017  1 4 1 0 0 1
  15. 2 2018  1 4 1 0 0 1
  16. 3 2013  6 4 1 0 0 0
  17. 3 2014  6 4 1 0 0 0
  18. 3 2015  6 4 1 0 0 0
  19. 3 2016  6 4 1 0 0 1
  20. 3 2017  6 4 1 0 0 1
  21. 3 2018  6 4 1 0 0 1
  22. 3 2019  6 4 1 0 0 1
  23. 4 2013  7 4 1 0 0 0
  24. 4 2014  7 4 1 0 0 0
  25. 4 2015  7 4 1 0 0 0
  26. 4 2016  7 4 1 0 2 0
  27. 4 2017  7 4 1 0 2 0
  28. 4 2018  7 4 1 0 2 0
  29. 4 2019  7 4 1 0 2 0
  30. 5 2014 11 4 0 0 0 0
  31. 5 2015 11 4 0 0 0 0
  32. 5 2016 11 4 0 0 1 0
  33. 5 2017 11 4 0 0 1 0
  34. 5 2018 11 4 0 0 1 0
  35. 5 2019 11 4 0 0 1 0
  36. 6 2017 13 4 1 0 0 0
  37. 6 2018 13 4 1 0 0 0
  38. 7 2014  9 4 1 0 0 0
  39. 7 2015  9 4 1 0 0 0
  40. 7 2016  9 4 1 0 1 0
  41. 7 2017  9 4 1 0 1 0
  42. 8 2016 13 4 0 0 0 0
  43. 8 2017 13 4 0 0 0 0
  44. 8 2018 13 4 0 1 1 2
  45. 8 2019 13 4 0 1 1 2
  46. 9 2014 16 4 1 0 0 0
  47. 9 2015 16 4 1 0 0 0
  48. 9 2016 16 4 1 0 0 2
  49. 9 2017 16 4 1 0 0 2
  50. 9 2018 16 4 1 0 0 2
  51. 9 2019 16 4 1 0 0 2
  52. 10 2015  4 5 0 0 0 0
  53. 10 2016  4 5 0 0 1 0
  54. 10 2017  4 5 0 0 1 0
  55. 10 2018  4 5 0 0 1 0
  56. 10 2019  4 5 0 0 1 0
  57. 11 2015  4 4 1 0 0 0
  58. 11 2016  4 4 1 0 0 1
  59. 11 2017  4 4 1 0 0 1
  60. 11 2018  4 4 1 0 0 1
  61. 11 2019  4 4 1 0 0 1
  62. 12 2015 16 4 1 0 0 0
  63. 12 2016 16 4 1 0 0 0
  64. 12 2017 16 4 1 0 0 0
  65. 13 2015  8 4 0 0 0 0
  66. 13 2016  8 4 0 0 0 1
  67. 13 2017  8 4 0 0 0 1
  68. 13 2018  8 4 0 0 0 1
  69. 13 2019  8 4 0 0 0 1
  70. 14 2014 11 5 1 0 0 0
  71. 14 2015 11 5 1 0 0 0
  72. 14 2016 11 5 1 1 1 2
  73. 14 2017 11 5 1 1 1 2
  74. 14 2018 11 5 1 1 1 2
  75. 14 2019 11 5 1 1 1 2
  76. 15 2012 11 4 1 0 0 0
  77. 15 2013 11 4 1 0 0 0
  78. 15 2014 11 4 1 0 0 0
  79. 15 2015 11 4 1 0 0 0
  80. 15 2016 11 4 1 0 0 0
  81. 16 2012  9 4 1 0 0 0
  82. 16 2013  9 4 1 0 0 0
  83. 16 2014  9 4 1 0 0 0
  84. 16 2015  9 4 1 0 0 0
  85. 16 2016  9 4 1 0 0 0
  86. 16 2017  9 4 1 0 0 0
  87. 16 2018  9 4 1 2 1 0
  88. 16 2019  9 4 1 2 1 0
  89. 17 2015 10 4 1 0 1 0
  90. 17 2016 10 4 1 0 1 0
  91. 17 2017 10 4 1 0 1 0
  92. 17 2018 10 4 1 0 1 0
  93. 17 2019 10 4 1 0 1 0
  94. 18 2014 13 4 1 0 0 0
  95. 18 2015 13 4 1 0 0 0
  96. 18 2016 13 4 1 0 0 1
  97. 18 2017 13 4 1 0 0 1
  98. 18 2018 13 4 1 0 0 1
  99. 19 2015 11 4 1 0 0 0
  100. 19 2016 11 4 1 0 0 0
  101. 19 2017 11 4 1 0 0 0
  102. 19 2018 11 4 1 1 0 1
  103. 19 2019 11 4 1 1 0 1
  104. end
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 一对多 Management Managemen stata stata数据处理 stata编程

回帖推荐

DΘstinyじò 发表于3楼  查看完整内容

你应该还要分年份统计吧。思维转换一下,分年份,在location、legalform、size_ms相同情况下,除去自身外统计其他ID的a_SocialRespon3、a_Management3、a_FoodSafety变量的和。尝试以下代码:
沙发
圈圈侠0404 学生认证  发表于 2021-4-26 15:11:42 |只看作者 |坛友微信交流群
黄老师,您有何高见

使用道具

藤椅
DΘstinyじò 发表于 2021-4-28 20:41:41 |只看作者 |坛友微信交流群
你应该还要分年份统计吧。思维转换一下,分年份,在location、legalform、size_ms相同情况下,除去自身外统计其他ID的a_SocialRespon3、a_Management3、a_FoodSafety变量的和。尝试以下代码:
  1. rangestat (sum) a_SocialRespon3 a_Management3 a_FoodSafety,interval(id . .) by(year location legalform size_ms)  excludeself
复制代码

使用道具

板凳
圈圈侠0404 学生认证  发表于 2021-5-4 13:20:53 |只看作者 |坛友微信交流群
DΘstinyじò 发表于 2021-4-28 20:41
你应该还要分年份统计吧。思维转换一下,分年份,在location、legalform、size_ms相同情况下,除去自身外统 ...
谢谢您的热心回答!!! 不小心踩了这个答案,本来是想点赞的。。。您的思路很棒,感谢!!!!

使用道具

报纸
wqq0611 发表于 2021-5-9 20:32:57 |只看作者 |坛友微信交流群
DΘstinyじò 发表于 2021-4-28 20:41
你应该还要分年份统计吧。思维转换一下,分年份,在location、legalform、size_ms相同情况下,除去自身外统 ...
老师,您好,请问一下如果是location不同、legalform、size_ms相同的情况下呢,其他条件均不变,我也遇到一个相似的问题,但是我的匹配的条件是行业相同,地区不同,请问您有什么高见

使用道具

地板
DΘstinyじò 发表于 2021-5-9 20:41:33 |只看作者 |坛友微信交流群
wqq0611 发表于 2021-5-9 20:32
老师,您好,请问一下如果是location不同、legalform、size_ms相同的情况下呢,其他条件均不变,我也遇到 ...
没太理解你的loction不同,是不考虑这个因素,还是统计的时候必须是其他location,最好是以例子说明一下。

使用道具

7
wqq0611 发表于 2021-5-9 20:46:09 |只看作者 |坛友微信交流群
DΘstinyじò 发表于 2021-5-9 20:41
没太理解你的loction不同,是不考虑这个因素,还是统计的时候必须是其他location,最好是以例子说明一下。 ...
是统计的时候必须是其他的location,假设需要为id为1的样本匹配对应的样本,目标即为寻找跟id为1的样本有相同的legal form,size_ms,不同的location的值的样本,其他情况不变,就是这个匹配条件有差别

使用道具

8
DΘstinyじò 发表于 2021-5-9 21:14:05 |只看作者 |坛友微信交流群
wqq0611 发表于 2021-5-9 20:46
是统计的时候必须是其他的location,假设需要为id为1的样本匹配对应的样本,目标即为寻找跟id为1的样本有相 ...
  1. rangestat (sum) t1=a_SocialRespon3 t2=a_Management3 t3=a_FoodSafety,interval(id . .) by(year legalform size_ms)  excludeself
  2. rangestat (sum) t4=a_SocialRespon3 t5=a_Management3 t6=a_FoodSafety,interval(id . .) by(year location legalform size_ms)  excludeself
  3. forvalues i=1/3 {
  4.          replace t`=`i'+3'=t`i'-t`=`i'+3'
  5.          drop t`i'
  6.          rename t`=`i'+3' t`i'
  7. }
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

使用道具

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

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

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

GMT+8, 2024-11-6 03:41