楼主: wangzai2367
1977 7

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

  • 2关注
  • 0粉丝

已卖:1份资源

大专生

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 |AI写论文

+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 (38.28 KB)

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;
复制代码

报纸
缘oO来如此0o 发表于 2021-1-25 20:46:21
l1i2n3i4n5g 发表于 2021-1-25 15:11
牛 比 牛逼,学习了。

地板
wangzai2367 在职认证  发表于 2021-1-26 08:50:40
zdl1225 发表于 2021-1-25 13:05
如图,供参考。
这是对每个变量分别转置,再进行merge合并吗,很棒哦

7
wangzai2367 在职认证  发表于 2021-1-26 08:52:27
l1i2n3i4n5g 发表于 2021-1-25 15:11
膜拜大神,太牛逼了,对我这小白还有好多看不懂

8
superguy333 发表于 2021-2-13 00:44:04
l1i2n3i4n5g 发表于 2021-1-25 15:11
有点复杂,其实可以更简单点

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-10 21:42