全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
9779 10
2012-08-18
stata达人:
        我需要按公司求连续三年的Incom均值,但中间时间是不连续的,数据量大,不能一个个挑,请问该用什么命令?非常感谢!!

stkcd

year

Incom

Mean

788

1997

2

1.67

788

1998

2

1.67

788

2000

1

1.67

788

2006

1

1.33

788

2007

2

1.33

788

2008

1

1.33

788

2009

1

1

788

2010

1

1

704

2008

2

1.33

704

2009

1

1.33

704

2010

1

1.33


二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-18 03:14:04
自己编两行命令即可。我不太理解题意:1.哪一个是代表不同公司的变量?2.是说同一公司如果有连续三年的观测值,则求收入均值么?
如果是,并且我假设公司变量是stkcd,那么写如下命令:
sort stkcd   // 按照公司名称分类
gen ave=.  //生成一个表示三年均值的变量ave,默认值为缺失
replace ave=(incom[_n]+incom[_n+1]+incom[_n+2])/3   ///
if  year[_n]=year[_n+1]-1 & year[_n+1]=year[_n+2]-1       //如果有连续三年,则生成均值

把上面这几行程序复制到dofile里就行了。当然,如果我没理解你的题意,那你自己再改改吧。
二维码

扫码加我 拉你入群

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

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

2012-8-18 16:01:42
newbeing :非常感谢您详细的答复! 您的理解没错。但运行最后出现“=exp not allowed”, 而且值不对。另外:如果年份总数不是3的倍数改如何处理,就是从2006-2010是5年,2006 、2007、 2008三年平均,最后剩2年,我还需要2008、 2009 、2010年的平均值。
二维码

扫码加我 拉你入群

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

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

2012-8-18 16:13:53
newbeing :在试了一次,您的命令完全正确! 非常感谢您热心帮助!
sort stkcd    year
gen ave=.   replace ave=(incom[_n]+incom[_n+1]+incom[_n+2])/3   if  year[_n]==year[_n+1]-1 & year[_n+1]==year[_n+2]-1  // 改为“==”
二维码

扫码加我 拉你入群

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

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

2013-12-7 12:33:30
恩,谢谢
二维码

扫码加我 拉你入群

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

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

2014-8-22 11:52:32
上述命令的结果好像前移了一年哦,应该为:
sort stkcd    year
gen ave=(incom[_n]+incom[_n-1]+incom[_n+1])/3   if   year[_n-1]==year[_n]-1 & year[_n]==year[_n+1]-1
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群