楼主: angelatao
2625 5

[数据管理求助] 同一个id中具有某些连续特征的变量如何生成!急求 [推广有奖]

  • 2关注
  • 2粉丝

本科生

81%

还不是VIP/贵宾

-

威望
0
论坛币
2470 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
771 点
帖子
53
精华
0
在线时间
138 小时
注册时间
2010-12-3
最后登录
2014-8-13

楼主
angelatao 发表于 2012-12-15 23:37:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
平衡面板数据如下:

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。

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

扫码加我 拉你入群

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

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

关键词:year 平衡面板 不胜感激 面板数据 不知道 计算 面板 如何 平衡

沙发
fgleric 发表于 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 |
     +--------------------------+

藤椅
sungmoo 发表于 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 /*连续二年*/

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

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

报纸
angelatao 发表于 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| ...
非常感谢,很有意思的方法。版主很聪明哦!

地板
xge2000 发表于 2013-11-27 21:17:45
it is goooooooooooood

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

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