全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1852 3
2012-04-08
UP_DN        ReTest        wk        Ship        G0        G1        G2
DN        Total        2012wk11        86.16643        13.80203        42.44882        29.91558
DN        Total        2012wk12        84.21434        7.564374        31.8203        44.82967
DN        Total        2012wk14        84.21434        7.564374        31.8203        44.82967
DN        Total        date0316        84.21434        7.564374        31.8203        44.82967
DN        Total        date0317        84.21434        7.564374        31.8203        44.82967
DN        Total        date0407        84.21434        7.564374        31.8203        44.82967
UP        Total        2012wk11        87.72522        13.23099        43.28574        31.20849
UP        Total        2012wk12        85.49261        9.771518        40.9202        34.80089
UP        Total        2012wk14        85.49261        9.771518        40.9202        34.80089
UP        Total        date0316        85.49261        9.771518        40.9202        34.80089
UP        Total        date0317        85.49261        9.771518        40.9202        34.80089
UP        Total        date0407        85.49261        9.771518        40.9202        34.80089


ReTest        wk        Ship DN        Ship UP        G0 DN        G0 UP        G1 DN        G1 UP        G2 DN        G2 UPTotal        2012wk11        86.16643        87.72522        13.80203        13.23099        42.44882        43.28574        29.91558        31.20849Total        2012wk12        84.21434        85.49261        7.564374        9.771518        31.8203        40.9202        44.82967        34.80089Total        2012wk14        84.21434        85.49261        7.564374        9.771518        31.8203        40.9202        44.82967        34.80089Total        date0316        84.21434        85.49261        7.564374        9.771518        31.8203        40.9202        44.82967        34.80089Total        date0317        84.21434        85.49261        7.564374        9.771518        31.8203        40.9202        44.82967        34.80089Total        date0407        84.21434        85.49261        7.564374        9.771518        31.8203        40.9202        44.82967        34.80089


请问高手上面的表转为下面的表,最简便的SAS语句是什么?TRANSPOSE似乎不行。
请高手指点,非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-9 11:15:32
代码你看看,一些微调你可以自己做一下,希望对你有帮助.

data work.a;
        input UP_DN $ ReTest $ wk $ Ship G0 G1 G2;
        datalines;
DN        Total        2012wk11        86.16643        13.80203        42.44882        29.91558
DN        Total        2012wk12        84.21434        7.564374        31.8203        44.82967
DN        Total        2012wk14        84.21434        7.564374        31.8203        44.82967
DN        Total        date0316        84.21434        7.564374        31.8203        44.82967
DN        Total        date0317        84.21434        7.564374        31.8203        44.82967
DN        Total        date0407        84.21434        7.564374        31.8203        44.82967
UP        Total        2012wk11        87.72522        13.23099        43.28574        31.20849
UP        Total        2012wk12        85.49261        9.771518        40.9202        34.80089
UP        Total        2012wk14        85.49261        9.771518        40.9202        34.80089
UP        Total        date0316        85.49261        9.771518        40.9202        34.80089
UP        Total        date0317        85.49261        9.771518        40.9202        34.80089
UP        Total        date0407        85.49261        9.771518        40.9202        34.80089
;
run;


proc sql noprint;
        create table work.b as
                select retest,
                        wk,
                        up_dn,
                        ship,
                        g0,
                        g1,
                        g2
                from work.a
                group by wk,up_dn;
quit;

data work.c;
        set work.b;
        by wk up_dn;
        if first.wk then do;
                old_up_dn = up_dn;
                old_ship = ship;
                old_g0 = g0;
                old_g1 = g1;
                old_g2 = g2;
                retain old_up_dn old_ship old_g0 old_g1 old_g2;
                put "1";
        end;
        else do;
                ship_dn = old_ship;
                ship_up = ship;
                g0_dn = old_g0;
                g0_up = g0;
                g1_dn = old_g1;
                g1_up = g1;
                g2_dn = old_g2;
                g2_up = g2;
                total = retest;
                put "2";
        end;
run;

proc sql noprint;
        create table work.d as
                select wk,
                        ship_dn,
                        ship_up,
                        g0_dn,
                        g0_up,
                        g1_dn,
                        g1_up,
                        g2_dn,
                        g2_up,
                        total
                from work.c
                where ship_dn not is missing
                order by wk;
quit;
二维码

扫码加我 拉你入群

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

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

2012-4-9 14:01:58
直接sql链接就OK啦

data work.a;
        input UP_DN $ ReTest $ wk $ Ship G0 G1 G2;
        datalines;
DN        Total        2012wk11        86.16643        13.80203        42.44882        29.91558
DN        Total        2012wk12        84.21434        7.564374        31.8203        44.82967
DN        Total        2012wk14        84.21434        7.564374        31.8203        44.82967
DN        Total        date0316        84.21434        7.564374        31.8203        44.82967
DN        Total        date0317        84.21434        7.564374        31.8203        44.82967
DN        Total        date0407        84.21434        7.564374        31.8203        44.82967
UP        Total        2012wk11        87.72522        13.23099        43.28574        31.20849
UP        Total        2012wk12        85.49261        9.771518        40.9202        34.80089
UP        Total        2012wk14        85.49261        9.771518        40.9202        34.80089
UP        Total        date0316        85.49261        9.771518        40.9202        34.80089
UP        Total        date0317        85.49261        9.771518        40.9202        34.80089
UP        Total        date0407        85.49261        9.771518        40.9202        34.80089
;
run;
proc sql;
create table b as
select distinct wk
from a;
create table b as
select b.*,Ship as Ship_DN,G0 as G0_DN,G1 AS G1_DN,G2 AS G2_DN
FROM B LEFT JOIN A
ON B.WK=A.WK AND A.UP_DN='DN';
create table b as
select b.*,Ship as Ship_UP,G0 as G0_UP,G1 AS G1_UP,G2 AS G2_UP
FROM B LEFT JOIN A
ON B.WK=A.WK AND A.UP_DN='UP';
QUIT;
二维码

扫码加我 拉你入群

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

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

2012-4-9 18:01:55
谢谢楼上两位,非常有帮助!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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