全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
972 3
2013-04-03
假如我有一个数据集test,如下ID为顾客序列号,prod为顾客购买的产品,怎么才能转换成目标数据集的样子?
DATA TEST;
INPUT ID PROD$;
CARDS;
11 A
11 B
11 C
21 B
21 C
31 D
;


目标数据集:
ID  A B C D
11  1 1 1 0
21  0 1 1 0
31  0 0 0 1

二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-3 09:13:25
没有想到更好的方法,楼主可以试试下面的代码:

DATA TEST;
INPUT ID PROD$;
CARDS;
11 A
11 B
11 C
21 B
21 C
31 D
;

proc sql;
   create table tmp1 as
    select distinct * from
         (select distinct id from test)
         ,(select distinct prod from test);
quit;

data tmp2;
   merge tmp1 test(in=a);
   by id prod;
   value=a;
run;

proc transpose data=tmp2 out=wanted(drop=_name_);
   by id;
   id prod;
   var value;
run;
二维码

扫码加我 拉你入群

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

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

2013-4-3 09:18:53
proc transpose data=test out=tmp1(drop=_name_);
   by id;
   id prod;
   var id;
run;

data wanted;
    set tmp1;
        array tmp(*) a--d;
        do i=1 to dim(tmp);
           tmp(i)=^missing(tmp(i));
        end;
        drop i;
run;
二维码

扫码加我 拉你入群

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

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

2013-4-3 11:04:43
pobel 发表于 2013-4-3 09:13
没有想到更好的方法,楼主可以试试下面的代码:

DATA TEST;
这种方法很好,多谢多谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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