请选择 进入手机版 | 继续访问电脑版
楼主: wangzai2367
1397 7

[问答] SAS同时把多个变量转置以后还在一个观测 [推广有奖]

  • 2关注
  • 0粉丝

大专生

28%

还不是VIP/贵宾

-

威望
0
论坛币
88 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
458 点
帖子
16
精华
0
在线时间
56 小时
注册时间
2020-1-2
最后登录
2022-5-5

wangzai2367 在职认证  发表于 2021-1-23 14:10:30 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
abcde
010032020-12-08C1

2

010032021-01-08C2

3

020102020-09-14C1

2

020102020-10-10C2

3

020142020-09-24C1

2

020142020-10-19C2

3

020142020-12-22C5

6

怎么可以把数据按照d列进行转置,转置以后b,c列还是跟在d列的后面,变成下面的样子
ad1bcd2bcd3bc
01003

2

2020-12-08治疗期C1

3

2021-01-08治疗期C2
02010

2

2020-09-14治疗期C1

3

2020-10-10治疗期C2
02014

2

2020-09-24治疗期C1

3

2020-10-19治疗期C2

6

2020-12-22治疗期C5

二维码

扫码加我 拉你入群

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

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

关键词:多个变量

回帖推荐

wangzai2367 在职认证  发表于 2021-1-25 08:48:56 |显示全部楼层 |坛友微信交流群
有没有知道的帮忙解决一下啊

使用道具

zdl1225 发表于 2021-1-25 13:05:22 |显示全部楼层 |坛友微信交流群
如图,供参考。
360截图20210125130438285.jpg

使用道具

l1i2n3i4n5g 在职认证  发表于 2021-1-25 15:11:28 |显示全部楼层 |坛友微信交流群
  1. data test1;
  2.         input (a        b        c        d        e) (:$100.);
  3. cards;
  4. 01003        2020-12-08        C1        2 否
  5. 01003        2021-01-08        C2        3 是
  6. 02010        2020-09-14        C1        2 否
  7. 02010        2020-10-10        C2        3 是
  8. 02014        2020-09-24        C1        2 否
  9. 02014        2020-10-19        C2        3 是
  10. 02014        2020-12-22        C5        6 是
  11. ;
  12. run;

  13. proc sql noprint;
  14.         select distinct(d) into : d separated by ' ' from test1;
  15. quit;

  16. proc sort data=test1;
  17.         by a d;
  18. run;

  19. %macro tran;
  20. data want;
  21.         set test1(drop=e);
  22.         by a d;
  23.         length
  24. %do i=1 %to %sysfunc(countw(&d));
  25. %let dd=%scan(&d,&i);
  26. d_&dd $100
  27. b_&dd $100
  28. c_&dd $100
  29. %end;
  30. ;
  31.         retain
  32. %do i=1 %to %sysfunc(countw(&d));
  33. %let dd=%scan(&d,&i);
  34. d_&dd b_&dd c_&dd
  35. %end;
  36. ;
  37. %do i=1 %to %sysfunc(countw(&d));
  38. %let dd=%scan(&d,&i);
  39.         if d="&dd" then do;
  40.                 d_&dd=d;
  41.                 b_&dd=b;
  42.                 c_&dd=c;
  43.         end;
  44. %end;
  45.         if last.a then output;
  46.         drop b c d;
  47. run;
  48. %mend;
  49. %tran;

  50. proc print;run;
复制代码

使用道具

l1i2n3i4n5g 发表于 2021-1-25 15:11
牛 比 牛逼,学习了。

使用道具

wangzai2367 在职认证  发表于 2021-1-26 08:50:40 |显示全部楼层 |坛友微信交流群
zdl1225 发表于 2021-1-25 13:05
如图,供参考。
这是对每个变量分别转置,再进行merge合并吗,很棒哦

使用道具

wangzai2367 在职认证  发表于 2021-1-26 08:52:27 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2021-1-25 15:11
膜拜大神,太牛逼了,对我这小白还有好多看不懂

使用道具

superguy333 发表于 2021-2-13 00:44:04 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2021-1-25 15:11
有点复杂,其实可以更简单点

使用道具

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

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

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

GMT+8, 2024-3-29 15:39