全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
6096 9
2016-12-30
各位大神好,有个问题想请教一下
我有如下数据:
id  startyear endyear A B C D .....
1   1998      2002     a b c d......
2   2001      2005     w e r t .......
3   2003      2007     t  t y u.......
....

A B C D等是我编的其余变量
我现在想实现:
1.生成一个变量year表示当前年份,也就是说year range里每一年都有个观测值
2.除了year这个变量,其他的观测值都相同

最后的数据这样(以第一个id为例):
id  startyear endyear year A B C D .....
1   1998      2002     1998 a b c d......

1   1998      2002     1999 a b c d......
1   1998      2002     2000 a b c d......
1   1998      2002     2001 a b c d......
1   1998      2002     2002 a b c d......


有木有大神知道怎么在stata实现呢?感激不尽!
二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-30 07:13:30
请用 (help) expand 指令!
二维码

扫码加我 拉你入群

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

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

2016-12-30 12:12:18
1. 生成4个变量包含所有的年份:
forvalue i = 1 / 4 {
gen y`i' =  startyear + `i' - 1
}
2. Reshape 数据
reshape y, i(id startyear endyear A B C D) j(year)

二维码

扫码加我 拉你入群

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

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

2016-12-31 06:20:21
ctx5518 发表于 2016-12-30 12:12
1. 生成4个变量包含所有的年份:
forvalue i = 1 / 4 {
gen y`i' =  startyear + `i' - 1
多谢!!不过,有个问题就是,我每个变量year 的range不一定是4啊,可能是10可能是5的,每个都不一样,我怎么处理这个问题呢?谢谢谢谢!!!
二维码

扫码加我 拉你入群

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

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

2016-12-31 07:11:00
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(id startyear endyear) str2(A B C D)
1 1998 2002 "a" "b" "c" "d"
2 2001 2005 "w" "e" "r" "t"
3 2003 2007 "t" "t" "y" "u"
end

expand endyear-startyear+1
gen year = startyear
bysort id (year): replace year = year[_n-1]+1 if _n > 1
sort id year
order id year
二维码

扫码加我 拉你入群

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

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

2016-12-31 07:54:50
syeira1224 发表于 2016-12-31 06:20
多谢!!不过,有个问题就是,我每个变量year 的range不一定是4啊,可能是10可能是5的,每个都不一样,我 ...
请试试
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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