楼主: 松小柏
6125 10

[数据管理求助] stata怎么实现缺失值按年份或者按公司删除 [推广有奖]

  • 0关注
  • 0粉丝

初中生

61%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
64 点
帖子
9
精华
0
在线时间
25 小时
注册时间
2019-12-3
最后登录
2019-12-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的原始数据是一个公司代码(stkcd)对应很多个年份(2008-2018),每个年份下面又对应很多个具体数据(personid),对于缺失值的处理我有两个想法,一是只要含有缺失值,则将整个公司各年的数据全部删除,二是只要含有缺失值,则将缺失值对应的年份下的所有数据都删除,比如如下数据中倒数第二行有一个缺失值,针对这个缺失值我想方法一是可以将stkcd为000002的数据全部删除,方法二是仅将stkcd为000002,year为2012的数据删除,求教大神用stata如何分别实现这两个目的,十分感谢!
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 stkcd int year long personid str3 gender byte(age degree) int tenure
  4. "000002" 2008   309304 "男" 38 4  94
  5. "000002" 2008  3038744 "男" 37 3  41
  6. "000002" 2008  3043528 "男" 43 4  57
  7. "000002" 2008  3053716 "男" 43 4  94
  8. "000002" 2008  3054222 "女" 44 4  14
  9. "000002" 2008 30142574 "男" 41 4  52
  10. "000002" 2008 30156222 "男" 42 4  14
  11. "000002" 2008 30156240 "男" 39 4  72
  12. "000002" 2008 30156346 "男" 41 4  50
  13. "000002" 2009   309304 "男" 39 4 106
  14. "000002" 2009  3038744 "男" 38 3  53
  15. "000002" 2009  3043528 "男" 44 4  69
  16. "000002" 2009  3053716 "男" 44 4  20
  17. "000002" 2009  3054222 "女" 45 4  26
  18. "000002" 2009 30130814 "男" 37 3   9
  19. "000002" 2009 30142574 "男" 42 4  64
  20. "000002" 2009 30156222 "男" 43 4  26
  21. "000002" 2009 30156240 "男" 40 4  84
  22. "000002" 2009 30156346 "男" 42 4  62
  23. "000002" 2010   309304 "男" 40 4 118
  24. "000002" 2010  3038744 "男" 39 3  65
  25. "000002" 2010  3043528 "男" 45 4  81
  26. "000002" 2010  3053716 "男" 45 4  32
  27. "000002" 2010  3054222 "女" 46 4  38
  28. "000002" 2010 30130814 "男" 38 3  21
  29. "000002" 2010 30142574 "男" 43 4  76
  30. "000002" 2010 30156222 "男" 44 4  38
  31. "000002" 2010 30156240 "男" 41 4  96
  32. "000002" 2010 30156346 "男" 43 4  74
  33. "000002" 2011   309304 "男" 41 4 130
  34. "000002" 2011  3043528 "男" 46 4  93
  35. "000002" 2011  3044616 "男" 56 4   9
  36. "000002" 2011  3052888 "男" 43 5   9
  37. "000002" 2011  3053716 "男" 46 4   9
  38. "000002" 2011  3054222 "女" 47 4  50
  39. "000002" 2011 30130814 "男" 39 3  33
  40. "000002" 2011 30142574 "男" 44 4  88
  41. "000002" 2011 30151046 "男" 41 4  11
  42. "000002" 2011 30156222 "男" 45 4  50
  43. "000002" 2011 30156346 "男" 44 4  86
  44. "000002" 2012   309304 "男" 42 4 144
  45. "000002" 2012  3043528 "男" 47 4 105
  46. "000002" 2012  3044616 "男" 57 4  21
  47. "000002" 2012  3052888 "男" 44 5  21
  48. "000002" 2012  3053716 "男" 48 4 142
  49. "000002" 2012  3054222 "女" 49 4  62
  50. "000002" 2012 30130814 "男" 40 3  45
  51. "000002" 2012 30142574 "男" 46 4 100
  52. "000002" 2012 30151046 "男" 42 4   .
  53. "000002" 2012 30156222 "男" 47 4  62
  54. end
复制代码



二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 缺失值 generated generate stata 缺失值

回帖推荐

黃河泉 发表于8楼  查看完整内容

听起来是有道理的,请分别试试
沙发
minkeyqi34 发表于 2019-12-7 06:49:55 |只看作者 |坛友微信交流群
方法一是可以将stkcd为000002的数据全部删除
drop if stkcd==000002
方法二是仅将stkcd为000002,year为2012的数据删除
drop if stkcd==000002 & year==2012

使用道具

藤椅
黃河泉 在职认证  发表于 2019-12-7 08:36:03 |只看作者 |坛友微信交流群
为何要这样做?

使用道具

板凳
松小柏 发表于 2019-12-7 09:56:18 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-12-7 08:36
为何要这样做?
因为我要算管理层异质性指数(HHI指数),如果只删除有缺失值的行的话那么算出来的HHI指数就是有误差的,所以必须至少要将有缺失值的年份的数据全部删除,然后我想如果样本量够大的话可以直接将所有含有缺失值的公司数据删掉

使用道具

报纸
松小柏 发表于 2019-12-7 10:01:16 |只看作者 |坛友微信交流群
minkeyqi34 发表于 2019-12-7 06:49
方法一是可以将stkcd为000002的数据全部删除
drop if stkcd==000002
方法二是仅将stkcd为000002,year为2 ...
非常感谢您的回复!按您的代码做的前提是stkcd为00002的数据里面含有缺失值,但是因为数据很多,我没有办法知道那些stkcd和哪些year里面有缺失值,请教这个问题怎么解决呢?

使用道具

地板
黃河泉 在职认证  发表于 2019-12-7 10:36:37 |只看作者 |坛友微信交流群
松小柏 发表于 2019-12-7 09:56
因为我要算管理层异质性指数(HHI指数),如果只删除有缺失值的行的话那么算出来的HHI指数就是有误差的, ...
老实说,这个我不熟。你说的:"如果只删除有缺失值的行的话那么算出来的HHI指数就是有误差的",我也不知道有何依据?一般而言,我很少看到 (当然,文章中通常也不会说有无删除缺失值之后,才计算指标) 你这样的作法!

使用道具

7
松小柏 发表于 2019-12-7 10:46:38 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-12-7 10:36
老实说,这个我不熟。你说的:"如果只删除有缺失值的行的话那么算出来的HHI指数就是有误差的",我也不知道 ...
是这样,每个公司的高管团队都由好几个成员组成,我要算这些成员的异质性指数,如果缺了其中一个人的数据,那么算出来的这个异质性指数并不能代表这家公司当年高管团队的异质性呀,所以我想存在缺失值的年份的数据是不能用的,我也没有找到相关论文具体说这一部分怎么处理,只是自我认为是这样,如果不对敬请指正,谢谢!

使用道具

8
黃河泉 在职认证  发表于 2019-12-7 10:56:56 |只看作者 |坛友微信交流群
松小柏 发表于 2019-12-7 10:46
是这样,每个公司的高管团队都由好几个成员组成,我要算这些成员的异质性指数,如果缺了其中一个人的数据 ...
听起来是有道理的,请分别试试
  1. // case 1:
  2. bys stkcd: egen d1 = count(tenure)
  3. bys stkcd: gen d2 = _N
  4. drop if d1 != d2

  5. // case 2:
  6. bys stkcd year: egen d3 = count(tenure)
  7. bys stkcd year: gen d4 = _N
  8. drop if d3 != d4
复制代码

使用道具

9
松小柏 发表于 2019-12-7 11:10:54 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-12-7 10:56
听起来是有道理的,请分别试试
我想要的就是这样一个效果,非常感谢您的帮忙[em23]

使用道具

10
Dongyue2018 发表于 2024-1-7 10:51:22 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-12-7 10:56
听起来是有道理的,请分别试试
帮了大忙了,感谢黄老师,一朝回复造福后世!

使用道具

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

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

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

GMT+8, 2024-4-26 14:46