全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7619 7
2012-03-14
我想根据每一个id生成对应年、月的循序组变量groupid,
每一个groupid是根据对应的id分别生成,接下来的先后顺序又分别根据年和月,
不过前后月份有些时候不是相差一个月。
非常感谢达人的帮忙!

比如我有如下形式的数据:
clear
input id year    month    day
1 2002    1    11
1 2002    1    18
1 2002    1    25
1 2002    1    30
1 2002    1    31
1 2002    2    1
1 2002    2    4
1 2002    2    5
1 2002    2    6
1 2002    4    7
1 2002    4    8
1 2002    4    25
1 2002    4    26
2 2002    2    27
2 2002    2    28
2 2002    3    1
2 2002    3    4
2 2002    3    5
2 2002    3    6
2 2002    3    7
2 2002    3    8
2 2002    3    11
2 2002    3    12
3 2002    6    20
3 2002    6    21
3 2002    6    24
3 2002    6    25
3 2002    6    26
3 2002    6    27
3 2002    6    28
3 2003    7    1
3 2003    7    2
3 2003    7    3
3 2003    7    4
3 2003    9    5
3 2003    9    8
3 2003    9    9
3 2003    9    10
end
我想生成的目标数据形式为:
clear
input id year  month  day  groupid
1 2002   1    11  1
1 2002   1    18  1
1 2002   1    25  1
1 2002   1    30  1
1 2002   1    31  1
1 2002   2    1  2
1 2002   2    4  2
1 2002   2    5  2
1 2002   2    6  2
1 2002   4    7  3
1 2002   4    8  3
1 2002   4    25  3
1 2002   4    26  3
2 2002   2    27  1
2 2002   2    28  1
2 2002   3    1  2
2 2002   3    4  2
2 2002   3    5  2
2 2002   3    6  2
2 2002   3    7  2
2 2002   3    8  2
2 2002   3    11  2
2 2002   3    12  2
3 2002     6    20   1
3 2002     6    21  1
3 2002     6    24  1
3 2002     6    25  1
3 2002     6    26  1
3 2002     6    27  1
3 2002      6    28  1
3 2003     7    1  2
3 2003    7    2  2
3 2003    7    3  2
3 2003    7    4  2
3 2003    9    5  3
3 2003    9    8  3
3 2003    9    9  3
3 2003    9    10  3
end

非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-16 16:07:00
根据对你数据的理解,试试以下命令:
bysort id year month: gen groupid=_n
二维码

扫码加我 拉你入群

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

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

2012-3-16 16:07:32
不是你想要的结果再联系我
二维码

扫码加我 拉你入群

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

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

2012-3-16 16:26:09
liuhuaiju 发表于 2012-3-16 16:07
不是你想要的结果再联系我
还不是我想要的结果
我是想生成:对每一个样本,生成一个月份变量,不如第一个样本中对应1月的取值为1;对应2月的取值为2;
如果接下来没有3月,直接跳到7月的,那对应7月的取值为3.
二维码

扫码加我 拉你入群

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

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

2012-3-17 09:30:11
可以这样写
bysort id:gen x1=(month[_n]==month[_n-1])
gen x2=(x1==0)
bysort id:gen groupid1=sum(x2)
drop x1 x2
二维码

扫码加我 拉你入群

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

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

2012-3-17 14:46:55
flyawaykai 发表于 2012-3-17 09:30
可以这样写
bysort id:gen x1=(month[_n]==month[_n-1])
gen x2=(x1==0)
非常感谢楼主:)
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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