楼主: Henryzhu
7729 7

[其他] 请教达人Stata中如何根据id生成对应的年、月变量? [推广有奖]

  • 6关注
  • 61粉丝

已卖:314份资源

教授

89%

还不是VIP/贵宾

-

威望
0
论坛币
11959 个
通用积分
0.2415
学术水平
45 点
热心指数
76 点
信用等级
24 点
经验
86502 点
帖子
1419
精华
0
在线时间
1026 小时
注册时间
2010-11-23
最后登录
2022-1-9

楼主
Henryzhu 在职认证  发表于 2012-3-14 20:24:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想根据每一个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

非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 请教达人 Group month 如何

沙发
liuhuaiju 发表于 2012-3-16 16:07:00
根据对你数据的理解,试试以下命令:
bysort id year month: gen groupid=_n
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Henryzhu + 1 + 1 + 1 热心帮助其他会员

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

藤椅
liuhuaiju 发表于 2012-3-16 16:07:32
不是你想要的结果再联系我
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Henryzhu + 1 + 1 + 1 热心帮助其他会员

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

板凳
Henryzhu 在职认证  发表于 2012-3-16 16:26:09
liuhuaiju 发表于 2012-3-16 16:07
不是你想要的结果再联系我
还不是我想要的结果
我是想生成:对每一个样本,生成一个月份变量,不如第一个样本中对应1月的取值为1;对应2月的取值为2;
如果接下来没有3月,直接跳到7月的,那对应7月的取值为3.
很高兴能来这个论坛

报纸
flyawaykai 在职认证  发表于 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
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Henryzhu + 1 + 1 + 1 热心帮助其他会员

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

地板
Henryzhu 在职认证  发表于 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)
非常感谢楼主:)
很高兴能来这个论坛

7
Henryzhu 在职认证  发表于 2012-3-17 14:48:01
flyawaykai 发表于 2012-3-17 09:30
可以这样写
bysort id:gen x1=(month[_n]==month[_n-1])
gen x2=(x1==0)
非常感谢楼主:)
很高兴能来这个论坛

8
liuhuaiju 发表于 2012-3-17 15:05:39
学习了,呵呵

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

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