全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2589 5
2012-12-15
平衡面板数据如下:

id       year      ex     
1       2000      0
1       2001      1
1       2002      1
1       2003      1
2       2000      1
2       2001      0
2       2002      1
2       2003      1

对每个id,样本期间均为2000-2003年。想得到连续3年ex=1;    连续2年ex=1的id个数。注意是连续,像id=2时,虽然有三年ex=1,但是它是连续2年ex=1。

不知道该怎样求得,请教大家!不胜感激。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-16 04:58:48
如果你panel data 是balance的,可以尝试下面的方法

input id       year      ex     
1       2000      0
1       2001      1
1       2002      1
1       2003      1
2       2000      1
2       2001      0
2       2002      1
2       2003      1
end
list
bys id:gen d=1 if ex[_n]==ex[_n+1]==1
list
bys id: egen sum=sum(d)
list


input id       year      ex     

            id       year         ex
  1.
. 1       2000      0
  2.
. 1       2001      1
  3.
. 1       2002      1
  4.
. 1       2003      1
  5.
. 2       2000      1
  6.
. 2       2001      0
  7.
. 2       2002      1
  8.
. 2       2003      1
  9. end

. list

     +----------------+
     | id   year   ex |
     |----------------|
  1. |  1   2000    0 |
  2. |  1   2001    1 |
  3. |  1   2002    1 |
  4. |  1   2003    1 |
  5. |  2   2000    1 |
     |----------------|
  6. |  2   2001    0 |
  7. |  2   2002    1 |
  8. |  2   2003    1 |
     +----------------+

. bys id:gen d=1 if ex[_n]==ex[_n+1]==1
(5 missing values generated)

. list

     +--------------------+
     | id   year   ex   d |
     |--------------------|
  1. |  1   2000    0   . |
  2. |  1   2001    1   1 |
  3. |  1   2002    1   1 |
  4. |  1   2003    1   . |
  5. |  2   2000    1   . |
     |--------------------|
  6. |  2   2001    0   . |
  7. |  2   2002    1   1 |
  8. |  2   2003    1   . |
     +--------------------+

. bys id: egen sum=sum(d)

. list

     +--------------------------+
     | id   year   ex   d   sum |
     |--------------------------|
  1. |  1   2000    0   .     2 |
  2. |  1   2001    1   1     2 |
  3. |  1   2002    1   1     2 |
  4. |  1   2003    1   .     2 |
  5. |  2   2000    1   .     1 |
     |--------------------------|
  6. |  2   2001    0   .     1 |
  7. |  2   2002    1   1     1 |
  8. |  2   2003    1   .     1 |
     +--------------------------+

二维码

扫码加我 拉你入群

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

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

2012-12-16 10:02:36
对每个id,样本期间均为2000-2003年。想得到连续3年ex=1;    连续2年ex=1的id个数。
bys id (year): egen s=mean(ex[1]+ex[2]*2+ex[3]*4+ex[4]*8)
collapse s,by(id)
count if s==7|s==14|s==15 /*连续三年*/
count if s==3|s==6|s==7|s>10 /*连续二年*/
二维码

扫码加我 拉你入群

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

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

2012-12-16 15:09:05
fgleric 发表于 2012-12-16 04:58
如果你panel data 是balance的,可以尝试下面的方法

input id       year      ex
谢谢,基本解决了,只是这样做出来连续三年的生产的sum是2,还要再进一步排查一下。
二维码

扫码加我 拉你入群

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

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

2012-12-16 15:09:44
sungmoo 发表于 2012-12-16 10:02
bys id (year): egen s=mean(ex[1]+ex[2]*2+ex[3]*4+ex[4]*8)
collapse s,by(id)
count if s==7|s==14| ...
非常感谢,很有意思的方法。版主很聪明哦!
二维码

扫码加我 拉你入群

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

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

2013-11-27 21:17:45
it is goooooooooooood
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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