SAS中文论坛

标题: 如何得到需要的数据集 [打印本页]

作者: shiyiming    时间: 2011-6-29 15:11
标题: 如何得到需要的数据集
data lab;
input name$;
cards;
hb
alt
;
run;


data aaa;
input hop no hb0 hb2 alt0 alt1 alt2@@;
cards;
1 1 5 4 20 30 40
1 2 6 5 40 50 60
2 3 3 6 20 30 40
2 4 4 7 20 30 40
;
run;

通过数据集lab中name变量进行循环
同时指定%let gcindex=0 1 2; /*表示后缀*/
最终的目的是将hb0 hb1 hb2/alt0 alt1 alt2纵向拼接*/
想得到的数据集
hop no lq lh1 lh2
1 1 5   .  4
1 2 6   .  5
2 3 3   .  6
2 4 4   .  7
1 1 20 30 40
1 2 40 50 60
2 3 20 30 40
2 4 20 30 40

谢谢!
作者: shiyiming    时间: 2011-6-29 16:21
标题: Re: 如何得到需要的数据集
[code:v6f1xntx]data aaa;
    input hop no hb0 hb2 alt0 alt1 alt2@@;
cards;
1 1 5 4 20 30 40
1 2 6 5 40 50 60
2 3 3 6 20 30 40
2 4 4 7 20 30 40
;
data out;
    length var_name $10;
    set aaa;
    array val{*} hb0-numeric-alt2;
    do i=1 to dim(val);
        var_name=compress(vname(val(i)),'','d');
        var_suffix=input(compress(vname(val(i)),'','dk'),best.);
        var_val=val(i);
        output;
    end;
    keep hop no var_name var_suffix var_val;
run;
proc sort data=out out=out;
    by hop no var_name;
run;
proc transpose data=out out=out(drop=_name_) prefix=lh;
    id var_suffix;
    var var_val;
    by hop no var_name;
run;[/code:v6f1xntx]




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