楼主: shizhumu3
6970 12

[数据管理求助] stata 每一年数据除以基年数据 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

已卖:2份资源

硕士生

6%

还不是VIP/贵宾

-

威望
0
论坛币
50 个
通用积分
0.0950
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
222 点
帖子
15
精华
0
在线时间
254 小时
注册时间
2017-3-27
最后登录
2024-3-28

楼主
shizhumu3 发表于 2019-11-13 20:13:00 |AI写论文
30论坛币
目前有2001-2014年的数据,需要将每一年的数据除以2002年的数据。变量较多,如何比较快速处理?
感谢~
2001 1
2002 2
2003 3
2004 1
2005 2
2006 1
2007 4
2008 5
2009 4
2010 6
2011 7
2012 6
2013 8
2014 1
2015 1

最佳答案

sungmoo 查看完整内容

*首变量是x,末变量是y foreach v of var x-y{ egen b=max((year==2002)*`v') g s`v'=`v'/b drop b }
关键词:Stata tata

沙发
sungmoo 发表于 2019-11-13 20:13:01
shizhumu3 发表于 2019-11-14 20:29
您好,请问在有100多个变量(100多列数据,需要对每列数据进行同样的标准化操作)的情况下,如何写循环以 ...
*首变量是x,末变量是y
foreach v of var x-y{
egen b=max((year==2002)*`v')
g s`v'=`v'/b
drop b
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

藤椅
震震果实 发表于 2019-11-13 22:49:12
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long Stkcd int year float TA byte Industry
  4. 2 2004   -.01287152 14
  5. 2 2005     .0379793 14
  6. 2 2006   -.03254221 14
  7. 2 2007    -.1055542 14
  8. 2 2008     .0460137 14
  9. 2 2009  -.023678504 14
  10. 2 2010    .04797925 14
  11. 2 2011    .03807399 14
  12. 2 2012    .04029807 14
  13. 2 2013    .04322495 14
  14. 2 2014   -.04682188 14
  15. 2 2015   .019479243 14
  16. 2 2016   -.01834771 14
  17. 2 2017   -.05431064 14
  18. 2 2018   .013433005 14
  19. 4 2004   .012097254  4
  20. 4 2005    .03507999  4
  21. 4 2006   -.03796872  4
  22. 4 2007   .014927777  4
  23. 4 2008    .05921411  4
  24. 4 2009   -.25066066  4
  25. 4 2010   .036716923  4
  26. 4 2011   -.05522041  4
  27. 4 2012   -.04965939  4
  28. 4 2013   -.07902792  4
  29. 4 2014    .04167118  4
  30. 4 2015  -.007108608  4
  31. 4 2016   -.27143374  4
  32. 4 2017   -.03820572  4
  33. 4 2018   -.11790305  4
  34. 5 2004   -.02441787 17
  35. 5 2005    .09121357 17
  36. 5 2006   .031729933 17
  37. 5 2007    .04856909 17
  38. 5 2008   -.07930826 17
  39. 5 2009   .029364293 17
  40. 5 2010 -.0012885252 17
  41. 5 2011   -.01805702 17
  42. 5 2012   -.12490482 17
  43. 5 2013   -.05256745 17
  44. 5 2014   .028592166 17
  45. 5 2015   .027978275 17
  46. 5 2016   -.03140398 17
  47. 5 2017   -.08719706 17
  48. 5 2018   .021274617 17
  49. 6 2004   -.04949849 14
  50. 6 2005   -.04239335 14
  51. 6 2006  -.012772647 14
  52. 6 2007    -.1892709 14
  53. 6 2008   -.21799867 14
  54. 6 2009  -.005709038 14
  55. 6 2010   -.08118204 14
  56. 6 2011   -.08921817 14
  57. 6 2012    -.1864996 14
  58. 6 2013  -.020579467 14
  59. 6 2014   -.05873706 14
  60. 6 2015   .011496712 14
  61. 6 2016    -.0712047 14
  62. 6 2017   .008625503 14
  63. 6 2018    -.0520212 14
  64. 7 2004     .1128898 14
  65. 7 2005   -.11881318 14
  66. 7 2006    .08850245 14
  67. 7 2007   -.09722006 14
  68. 7 2008   .036344107 14
  69. 7 2009   .003165475 14
  70. 7 2010  -.016973099 14
  71. 7 2011    -.0260668 14
  72. 7 2012    -.6759645 14
  73. 7 2013    -.2203809 14
  74. 7 2014       .03161 14
  75. 7 2015    -.3291461 14
  76. 7 2016    .11951564 14
  77. 7 2017  -.002861628 14
  78. 7 2018     .4276857 14
  79. end
  80. label values Industry Industry
  81. label def Industry 4 "C2", modify
  82. label def Industry 14 "K", modify
  83. label def Industry 17 "N", modify
复制代码

板凳
sungmoo 发表于 2019-11-14 07:40:25
*首列是year,次列是x
egen b=max((year==2002)*x)
g y=x/b
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

报纸
shizhumu3 发表于 2019-11-14 20:29:51
sungmoo 发表于 2019-11-14 07:40
*首列是year,次列是x
egen b=max((year==2002)*x)
g y=x/b
您好,请问在有100多个变量(100多列数据,需要对每列数据进行同样的标准化操作)的情况下,如何写循环以快速处理。
stata初学者,谢谢~

地板
sungmoo 发表于 2019-11-14 21:02:58
shizhumu3 发表于 2019-11-14 20:29
您好,请问在有100多个变量(100多列数据,需要对每列数据进行同样的标准化操作)的情况下,如何写循环以 ...
*首变量是x,末变量是y
foreach v of var x-y{
egen b=max((year==2002)*`v')
g s`v'=`v'/b
drop b
}

7
shizhumu3 发表于 2019-11-15 10:11:24
sungmoo 发表于 2019-11-14 21:02
*首变量是x,末变量是y
foreach v of var x-y{
egen b=max((year==2002)*`v')
foreach v of var x-y{
egen b=max((year==2002)*`v')
bysort year:egen a=sum(`v')
g s`v'=a/b
drop a b
}


采用您的方法后报错,说找不到x。
这样就可以了。
成功解决问题,十分感谢~

8
xinianlw 学生认证  发表于 2019-12-20 00:21:28 来自手机
shizhumu3 发表于 2019-11-13 20:13
目前有2001-2014年的数据,需要将每一年的数据除以2002年的数据。变量较多,如何比较快速处理?
感谢~
你好,请问您知道每个公司每一年的数据除以上一年的数据应该用什么命令吗?谢谢啦

9
非常好恩 发表于 2020-2-23 16:05:15 来自手机
请问本年数据除以上年数据的代码该怎么写?

10
非常好恩 发表于 2020-2-23 16:05:51 来自手机
xinianlw 发表于 2019-12-20 00:21
你好,请问您知道每个公司每一年的数据除以上一年的数据应该用什么命令吗?谢谢啦
请问本年与上年数据比值该怎么写?

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

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