楼主: 420948492
847 3

请教数据的转置问题 [推广有奖]

  • 2关注
  • 37粉丝

版主

院士

48%

还不是VIP/贵宾

-

威望
1
论坛币
724 个
通用积分
18.2952
学术水平
80 点
热心指数
89 点
信用等级
62 点
经验
13433 点
帖子
3704
精华
3
在线时间
2973 小时
注册时间
2007-10-16
最后登录
2023-5-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
假如我有一个数据集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

二维码

扫码加我 拉你入群

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

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

关键词:cards Input prod test card 序列号 产品

有人的地方就有江湖
沙发
pobel 在职认证  发表于 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;
和谐拯救危机

使用道具

藤椅
pobel 在职认证  发表于 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;
和谐拯救危机

使用道具

板凳
420948492 发表于 2013-4-3 11:04:43 |只看作者 |坛友微信交流群
pobel 发表于 2013-4-3 09:13
没有想到更好的方法,楼主可以试试下面的代码:

DATA TEST;
这种方法很好,多谢多谢
有人的地方就有江湖

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-28 13:40