全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅
1144 5
2021-01-10
请教各位老师,如何将一列时间序列数据,转换成几列同一年份的数据,原始数据为下面的数据1,想要的结果为数据2。
数据1:

[CODE]
* Example generated by -dataex-. To install: ssc install dataex
clear
input int year float zp
2003     0
2003     0
2003     0
2003     0
2003     0
2004     0
2004     0
2004     0
2004 .1513
2004     0
2005     0
2005     0
2005     0
2005 .1934
2005     0
2006     0
2006     0
2006     0
2006 .0383
2006     0
end
[/CODE]

数据2:

[CODE]
* Example generated by -dataex-. To install: ssc install dataex
clear
input int year byte zp int year1 float zp1 int year2 float zp2 int year3 float zp3
2003 0 2004     0 2005     0 2006     0
2003 0 2004     0 2005     0 2006     0
2003 0 2004     0 2005     0 2006     0
2003 0 2004 .1513 2005 .1934 2006 .0383
2003 0 2004     0 2005     0 2006     0
end
[/CODE]
二维码

扫码加我 拉你入群

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

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

全部回复
2021-1-11 08:50:43
先将每年的数据提取出来,再横向拼接。
二维码

扫码加我 拉你入群

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

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

2021-1-11 09:19:03
麟兮麟兮 发表于 2021-1-11 08:50
先将每年的数据提取出来,再横向拼接。
我本来的想法也是这样,但是一来没看明白merge命令应该这么操作,二来在想各位大佬会不会有更加简单的方法,所以想发个帖子问问。
二维码

扫码加我 拉你入群

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

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

2021-1-11 09:28:42
stata中可以先生成一个辅助列,然后用reshape命令,将长数据转为宽数据
具体有解释,可以看图片
reshape.png
具体命令如下 :
bysort year:gen n=_n
order n year zp
reshape wide zp,i(n) j(year)


然后可以按照需要添加新变量
二维码

扫码加我 拉你入群

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

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

2021-1-11 10:15:14
可以先做一个辅助列,然后采用reshape命令
具体命令为:
bysort year:gen n=_n
order n year zp
reshape wide zp,i(n) j(year)
然后依需要增加新变量
二维码

扫码加我 拉你入群

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

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

2021-1-11 10:34:26
艾云zr 发表于 2021-1-11 10:15
可以先做一个辅助列,然后采用reshape命令
具体命令为:
bysort year:gen n=_n
感谢大佬,十分契合我的想要的结果!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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