SAS中文论坛

标题: 数据合并 [打印本页]

作者: shiyiming    时间: 2009-3-25 22:35
标题: 数据合并
以上数据没有按照时间排序。我想将上期的资产读到这样的格式化

id  date             asset1              asset2
1        30-Jun-02        3238304000        3738303000
1        30-Dec-02        3238304000        3933701000
1        30-Jun-03        3933701000        3460316000
1        30-Dec-03        3933701000        3076160000
改变成如下格式

id   date             asset1              asset2
1        30-Jun-02        3238304000        3738303000
1        30-Dec-02        [color=#FF4000:qjuf1ink]3738303000[/color:qjuf1ink]        3933701000
1        30-Jun-03        3933701000        3460316000
1        30-Dec-03        [color=#FFFF00:qjuf1ink]3460316000[/color:qjuf1ink]        3076160000

即将上半年期的资产代替年总资产? 请问如何实现? 谢谢!这个只是部分数据,按照id sort 后应该可以完成其他的。
请指教!
作者: shiyiming    时间: 2009-3-27 12:08
标题: Re: 数据合并
[code:bo99okey]
proc sql noprint;
       create table b as
       select id
               , year(date) as year
               , date, assert1
               , assert2
        from a
        order by id, year, date
         ;
quit;
data b;
       retain tmp 0;
       set b;
       by id year;
       if first.year then tmp=asset2;
       if last.year then asset1=tmp;
       keep id date asset1 asset2;
run;
[/code:bo99okey]
没有验证过~~~
仅供参考。。
作者: Qiong    时间: 2009-3-27 17:19
标题: Re: 数据合并
[code:11lzvzi6]data temp;
informat date date9.;
format date date9.;
input id $ date $ asset1  $ asset2 $;
cards;
1 30-Jun-02 3238304000 3738303000
1 30-Dec-02 3238304000 3933701000
1 30-Jun-03 3933701000 3460316000
1 30-Dec-03 3933701000 3076160000
;
run;

proc sort data=temp;
by id date;
run;

data temp1;
set temp;
temp=lag(asset2);
if month(date)=12 then asset1=temp;
drop temp;
run;[/code:11lzvzi6]
作者: shiyiming    时间: 2009-3-28 09:10
标题: Re: 数据合并
谢谢。我再琢磨下,然后把方法都贴出来。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2