楼主: caibirdcnb
1887 3

[原创博文] 请问高手如何split数据集?非常感谢! [推广有奖]

  • 0关注
  • 37粉丝

讲师

47%

还不是VIP/贵宾

-

威望
0
论坛币
1367 个
通用积分
16.5538
学术水平
67 点
热心指数
70 点
信用等级
64 点
经验
6762 点
帖子
206
精华
2
在线时间
433 小时
注册时间
2011-8-31
最后登录
2023-9-23

楼主
caibirdcnb 发表于 2012-4-8 16:58:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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似乎不行。
请高手指点,非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:split 非常感谢 数据集 Transpose Total 如何

沙发
chendonghui1987 发表于 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;

藤椅
mymine 发表于 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;

板凳
caibirdcnb 发表于 2012-4-9 18:01:55
谢谢楼上两位,非常有帮助!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 19:00