楼主: nanana娜
2952 11

[编程问题求助] 按分位数分组后如何计算一组变量与另一组变量相同值的个数 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
8
精华
0
在线时间
38 小时
注册时间
2013-5-4
最后登录
2019-5-17

楼主
nanana娜 发表于 2019-1-2 00:28:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


分年度分行业对变量x按五分位点进行分组后,以fq_x=1这组的变量name为参照,怎么计算fq_x!=1其他四组的变量name与fq_x==1这组的变量name相同的个数?请各位大神指点!

图中的最后一列是希望得到的结果:在2008年的行业A中,fq_x=2这组中的个体id=3对应的name
与fq_x=1对应的name相同的个数为0;在2008年的行业A中,fq_x=3这组中的个体id=6对应的name
与fq_x=1对应的name相同的个数为2

[img]blob:https://bbs.pinggu.org/a8396035-63be-4afe-850b-8b53a3598da4[/img]

数据如下,数据量有点大,为了给出期望的结果,临时编了数据

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte id int year str1 industry float x str6 name float fq_x byte result
  4. 1 2008 "A"   1 "张三" 1 .
  5. 2 2008 "A" 1.2 "张三" 1 .
  6. 8 2008 "A" 1.4 "孙七" 1 .
  7. 3 2008 "A" 1.5 "王八" 2 0
  8. 4 2008 "A" 1.8 "李四" 2 0
  9. 7 2008 "A" 1.6 "李四" 2 0
  10. 5 2008 "A"   2 "赵五" 3 0
  11. 6 2008 "A" 2.2 "张三" 3 2
  12. 9 2008 "A" 2.5 "赵五" 3 0
  13. 10 2008 "A" 2.6 "陈九" 4 0
  14. 11 2008 "A" 2.8 "李四" 4 0
  15. 15 2008 "A" 2.6 "赵五" 4 0
  16. 12 2008 "A" 3.7 "王八" 5 0
  17. 13 2008 "A" 3.5 "陈九" 5 0
  18. 14 2008 "A" 3.3 "李四" 5 0
  19. 16 2008 "B"   1 "张三" 1 .
  20. 17 2008 "B" 1.2 "李四" 1 .
  21. 23 2008 "B" 1.4 "赵五" 1 .
  22. 18 2008 "B" 1.5 "孙七" 2 0
  23. 19 2008 "B" 1.8 "赵五" 2 1
  24. 22 2008 "B" 1.6 "孙七" 2 0
  25. 20 2008 "B"   2 "陈九" 3 0
  26. 21 2008 "B" 2.2 "李四" 3 1
  27. 24 2008 "B" 2.5 "陈九" 3 0
  28. 25 2008 "B" 2.6 "李四" 4 1
  29. 26 2008 "B" 2.8 "王八" 4 0
  30. 30 2008 "B" 2.6 "孙七" 4 0
  31. 27 2008 "B" 3.7 "陈九" 5 0
  32. 28 2008 "B" 3.5 "李四" 5 1
  33. 29 2008 "B" 3.3 "赵五" 5 1
  34. 31 2009 "A"   1 "张三" 1 .
  35. 32 2009 "A" 1.2 "李四" 1 .
  36. 38 2009 "A" 1.4 "赵五" 1 .
  37. 33 2009 "A" 1.5 "孙七" 2 0
  38. 34 2009 "A" 1.8 "赵五" 2 1
  39. 37 2009 "A" 1.6 "孙七" 2 0
  40. 35 2009 "A"   2 "陈九" 3 0
  41. 36 2009 "A" 2.2 "李四" 3 1
  42. 39 2009 "A" 2.5 "陈九" 3 0
  43. 40 2009 "A" 2.6 "李四" 4 1
  44. 41 2009 "A" 2.8 "王八" 4 0
  45. 45 2009 "A" 2.6 "孙七" 4 0
  46. 42 2009 "A" 3.7 "陈九" 5 0
  47. 43 2009 "A" 3.5 "李四" 5 1
  48. 44 2009 "A" 3.3 "赵五" 5 1
  49. 46 2009 "B" 1.2 "赵五" 1 .
  50. 47 2009 "B" 1.5 "张三" 1 .
  51. 52 2009 "B" 1.4 "李四" 1 .
  52. 48 2009 "B" 1.8 "李四" 2 1
  53. 49 2009 "B"   2 "孙七" 2 0
  54. 51 2009 "B" 1.6 "陈九" 2 0
  55. 50 2009 "B" 2.2 "赵五" 3 1
  56. 53 2009 "B" 2.5 "孙七" 3 0
  57. 54 2009 "B" 2.6 "赵五" 3 1
  58. 55 2009 "B" 2.8 "陈九" 4 0
  59. 59 2009 "B" 2.7 "李四" 4 1
  60. 60 2009 "B" 3.2 "陈九" 4 0
  61. 56 2009 "B" 3.7 "李四" 5 1
  62. 57 2009 "B" 3.5 "王八" 5 0
  63. 58 2009 "B" 3.3 "陈九" 5 0
  64. end
复制代码


二维码

扫码加我 拉你入群

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

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


沙发
nanana娜 发表于 2019-1-2 09:47:22
图片没放上

1546393572618.jpg (221.8 KB)

1546393572618.jpg

藤椅
黃河泉 在职认证  发表于 2019-1-2 16:15:17
你的 result 不对吧!例如 2008, A, fq_x=2 那一组的李四,也出现在 2008, A, fq_x=4 中,为何 result 会是 0?

板凳
nanana娜 发表于 2019-1-2 16:28:44
黃河泉 发表于 2019-1-2 16:15
你的 result 不对吧!例如 2008, A, fq_x=2 那一组的李四,也出现在 2008, A, fq_x=4 中,为何 result 会是 ...
只与fq_x=1这一组比较,fq_x=2、3、4、5分别与fq_x=1比较,fq_x=2、3、4、5之间不比较

报纸
nanana娜 发表于 2019-1-2 16:32:03
这样好像更明白点

1546393572618.jpg (249.45 KB)

1546393572618.jpg

地板
nanana娜 发表于 2019-1-2 16:33:56
nanana娜 发表于 2019-1-2 16:28
只与fq_x=1这一组比较,fq_x=2、3、4、5分别与fq_x=1比较,fq_x=2、3、4、5之间不比较
黄老师,我下面又放了张图片可能更清晰点

7
黃河泉 在职认证  发表于 2019-1-2 16:53:42
nanana娜 发表于 2019-1-2 16:33
黄老师,我下面又放了张图片可能更清晰点
你若可以举一个英文名字的例子 (我太忙,没有时间去转换成英文),我帮你问问!

8
nanana娜 发表于 2019-1-2 17:16:49
黃河泉 发表于 2019-1-2 16:53
你若可以举一个英文名字的例子 (我太忙,没有时间去转换成英文),我帮你问问!
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte id int year str1 industry float x str6 name float fq_x byte result
  4. 1 2008 "A"   1 "Emma"   1 .
  5. 2 2008 "A" 1.2 "Emma"   1 .
  6. 8 2008 "A" 1.4 "LEO"    1 .
  7. 3 2008 "A" 1.5 "Lucy"   2 0
  8. 4 2008 "A" 1.8 "Jessie" 2 0
  9. 7 2008 "A" 1.6 "Jessie" 2 0
  10. 5 2008 "A"   2 "James"  3 0
  11. 6 2008 "A" 2.2 "Emma"   3 2
  12. 9 2008 "A" 2.5 "James"  3 0
  13. 10 2008 "A" 2.6 "Wilson" 4 0
  14. 11 2008 "A" 2.8 "Jessie" 4 0
  15. 15 2008 "A" 2.6 "James"  4 0
  16. 12 2008 "A" 3.7 "Lucy"   5 0
  17. 13 2008 "A" 3.5 "Wilson" 5 0
  18. 14 2008 "A" 3.3 "Jessie" 5 0
  19. 16 2008 "B"   1 "Emma"   1 .
  20. 17 2008 "B" 1.2 "Jessie" 1 .
  21. 23 2008 "B" 1.4 "James"  1 .
  22. 18 2008 "B" 1.5 "LEO"    2 0
  23. 19 2008 "B" 1.8 "James"  2 1
  24. 22 2008 "B" 1.6 "LEO"    2 0
  25. 20 2008 "B"   2 "Wilson" 3 0
  26. 21 2008 "B" 2.2 "Jessie" 3 1
  27. 24 2008 "B" 2.5 "Wilson" 3 0
  28. 25 2008 "B" 2.6 "Jessie" 4 1
  29. 26 2008 "B" 2.8 "Lucy"   4 0
  30. 30 2008 "B" 2.6 "LEO"    4 0
  31. 27 2008 "B" 3.7 "Wilson" 5 0
  32. 28 2008 "B" 3.5 "Jessie" 5 1
  33. 29 2008 "B" 3.3 "James"  5 1
  34. 31 2009 "A"   1 "Emma"   1 .
  35. 32 2009 "A" 1.2 "Jessie" 1 .
  36. 38 2009 "A" 1.4 "James"  1 .
  37. 33 2009 "A" 1.5 "LEO"    2 0
  38. 34 2009 "A" 1.8 "James"  2 1
  39. 37 2009 "A" 1.6 "LEO"    2 0
  40. 35 2009 "A"   2 "Wilson" 3 0
  41. 36 2009 "A" 2.2 "Jessie" 3 1
  42. 39 2009 "A" 2.5 "Wilson" 3 0
  43. 40 2009 "A" 2.6 "Jessie" 4 1
  44. 41 2009 "A" 2.8 "Lucy"   4 0
  45. 45 2009 "A" 2.6 "LEO"    4 0
  46. 42 2009 "A" 3.7 "Wilson" 5 0
  47. 43 2009 "A" 3.5 "Jessie" 5 1
  48. 44 2009 "A" 3.3 "James"  5 1
  49. 46 2009 "B" 1.2 "James"  1 .
  50. 47 2009 "B" 1.5 "Emma"   1 .
  51. 52 2009 "B" 1.4 "Jessie" 1 .
  52. 48 2009 "B" 1.8 "Jessie" 2 1
  53. 49 2009 "B"   2 "LEO"    2 0
  54. 51 2009 "B" 1.6 "Wilson" 2 0
  55. 50 2009 "B" 2.2 "James"  3 1
  56. 53 2009 "B" 2.5 "LEO"    3 0
  57. 54 2009 "B" 2.6 "James"  3 1
  58. 55 2009 "B" 2.8 "Wilson" 4 0
  59. 59 2009 "B" 2.7 "Jessie" 4 1
  60. 60 2009 "B" 3.2 "Wilson" 4 0
  61. 56 2009 "B" 3.7 "Jessie" 5 1
  62. 57 2009 "B" 3.5 "Lucy"   5 0
  63. 58 2009 "B" 3.3 "Wilson" 5 0
  64. end
复制代码

9
黃河泉 在职认证  发表于 2019-1-2 17:51:13
nanana娜 发表于 2019-1-2 17:16
我帮你问了,明天看看有无结果?

10
黃河泉 在职认证  发表于 2019-1-2 18:15:23
nanana娜 发表于 2019-1-2 17:16
很幸运地,daniel klein 建议:
  1. tempfile fq_x1_full fq_x1_contract

  2. preserve
  3. keep if fq_x==1
  4. save "`fq_x1_full'"
  5. contract year industry name if fq_x==1
  6. save "`fq_x1_contract'"
  7. restore

  8. drop if fq_x==1
  9. merge m:1 year industry name using "`fq_x1_contract'" ///
  10.     , keep(master matched) nogenerate
  11. replace _freq = 0 if mi(_freq)

  12. append using "`fq_x1_full'"

  13. assert _freq == result

  14. sort year industry fq_x name
复制代码

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

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