全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
28388 16
2014-03-13
悬赏 200 个论坛币 已解决
大家好,假设我有2只股票AAA跟BBB的三项数据var1,var2,var3,时间2004-2005,现在的数据是这样的:

AAA
Period   2004    2005
var1       10          5
var2       20         10
var3       30         15

BBB
Period   2004    2005
var1       10          5
var2       20         10
var3       30         15

我想把它们转换成如下这样
Stock   Period     var1    var2    var3
AAA     2004         10       20       30
AAA     2005          5        10       15
BBB     2004         10       20       30
BBB     2005          5        10       15

请问该怎么做呢,谢谢啦

最佳答案

jjjj6666 查看完整内容

try: /* if the data is like var1 var2 var3 AAA . . Period 2004 2005 var1 10 5 var2 20 10 var3 30 15 BBB . . Period 2004 2005 var1 10 5 var2 20 10 var3 30 15 */ gen company = var1 if var1!="Period" & substr(var1,1,3) ...
二维码

扫码加我 拉你入群

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

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

全部回复
2014-3-13 22:56:15
try:

/* if the data is like
     var1   var2   var3  
       AAA      .      .  
    Period   2004   2005  
      var1     10      5  
      var2     20     10  
      var3     30     15  
       BBB      .      .  
    Period   2004   2005  
      var1     10      5  
      var2     20     10  
      var3     30     15  
*/

gen company = var1 if var1!="Period" & substr(var1,1,3)!="var"
replace company=company[_n-1] if company==""
drop if company==var1 | var1=="Period"
preserve
drop var3
reshape wide var2, i(company) j(var1) string
tempfile f1
sort company
save `f1'
restore
drop var2
rename var3 var2
reshape wide var2, i(company) j(var1) string
tempfile f2
sort company
save `f2'
use `f1'
append using `f2'
sort company, stable
gen period=2005 if int(_n/2)==_n/2
replace period=2004 if period==.
order company period

二维码

扫码加我 拉你入群

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

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

2014-3-13 23:06:49
转置
用sas处理挺快的
二维码

扫码加我 拉你入群

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

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

2014-3-13 23:44:48
看我发的截图。希望对你有所帮助。
附件列表
数据表.png

原图尺寸 2.53 KB

excel中,把原有的数据写成你题目的样子。然后复制这些原始数据,在新的单元格中,右击选择性粘贴,选择转置 ...

excel中,把原有的数据写成你题目的样子。然后复制这些原始数据,在新的单元格中,右击选择性粘贴,选择转置 ...

数据生成.png

原图尺寸 16.62 KB

数据生成.png

二维码

扫码加我 拉你入群

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

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

2014-3-14 00:11:48
命令
命令解释
用法示例
reshape
将数据重整
reshape long inc,i(id) j(yr)
inc--时间前面的统一的变量  
id-要分类的变量
yr-时间



stack
将多列数据转换成一列数据
stack a b c d, into(e f)
xpose
数据转置
xpose, clear

任务4.5 数据集mywide.dta共有六个变量,其中后四个变量分别为2003年和2004年的数据成绩和经济学成绩,现要求将数据转化为mylong.dta的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量。

原始数据mywide.dta
id        name        math2003        math2004        economy2003        economy2004
1        John        40        13        68        55
2        Chris        80        64        52        87
3        Jack        90        55        76        25
4        Huang        43        60        90        4
5        Tom        70        68        96        42
6        Han        53        10        85        89
7        Phillip        85        61        36        52
8        Jin        95        6        65        84

转了之后
id        name        year        math        economy
1        John        2003        40        68
1        John        2004        13        55
2        Chris        2003        80        52
2        Chris        2004        64        87
3        Jack        2003        90        76
3        Jack        2004        55        25
4        Huang        2003        43        90
4        Huang        2004        60        4
5        Tom        2003        70        96
5        Tom        2004        68        42
6        Han        2003        53        85
6        Han        2004        10        89
7        Phillip        2003        85        36
7        Phillip        2004        61        52
8        Jin        2003        95        65
8        Jin        2004        6        84



重整参考操作
*---------将学习成绩数据集mywide变换形式---------
use mywide, clear
reshape long math economy, i(id name) j(year)
save mylong, replace
*---------将学习成绩数据集mylong变换形式---------
reshape wide
*或者
use mylong, clear
reshape wide math economy, i(id name) j(yearr)
save mywide2, replace
二维码

扫码加我 拉你入群

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

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

2014-3-14 01:01:21
a529916304 发表于 2014-3-13 23:44
看我发的截图。希望对你有所帮助。
谢谢啊,但是我有很多股票,AAA,BBB。。。很多,直接转置的话远超excel允许的列数极限。我是想把BBB还是放在AAA下面
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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