楼主: 楠枫...狐狸
1728 3

[作业] 如何用retain\lag函数将多列变量转为一列? [推广有奖]

  • 0关注
  • 0粉丝

高中生

30%

还不是VIP/贵宾

-

威望
0
论坛币
792 个
通用积分
15.0008
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1356 点
帖子
23
精华
0
在线时间
31 小时
注册时间
2014-10-8
最后登录
2021-3-24

10论坛币
求教一下,如题,已有数据集中有变量C1-C10,C1为1-10,C2为11-20,以此类推,如何产生数据集CC,使得最终数据集是1-100的一列数据。
关键词:RETAIN lag ETA RET 如何用
沙发
l1i2n3i4n5g 在职认证  发表于 2017-7-24 17:41:11 |只看作者 |坛友微信交流群
  1. data test;
  2.         array c[10];
  3.         do j=1 to 10;
  4.                 do i=1 to dim(c);
  5.                         c[i]=j+10*(i-1);
  6.                 end;
  7.                 output;
  8.         end;
  9.         drop i j;
  10. run;

  11. /*方法一*/
  12. proc transpose data=test out=testa1;
  13. run;

  14. proc transpose data=testa1 out=testa2;
  15.         by _name_ notsorted;
  16. run;

  17. /*方法二*/
  18. data testb1;
  19.         set test;
  20.         array c[10];
  21.         do i=1 to dim(c);
  22.                 cc=c[i];
  23.                 output;
  24.         end;
  25.         keep cc;
  26. run;
  27. proc sort data=testb1;
  28.         by cc;
  29. run;
复制代码
已有 1 人评分论坛币 热心指数 收起 理由
albusdzx + 5 + 1 精彩帖子

总评分: 论坛币 + 5  热心指数 + 1   查看全部评分

使用道具

藤椅
楠枫...狐狸 发表于 2017-7-25 11:30:38 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-7-25 09:23
非常感谢,这两种方法实现起来稍微简单些,但是如何使用retain/lag语句来实现呢?作业需要这样实现,谢谢了!

使用道具

  1. proc iml;
  2.         use test;
  3.            read all var _ALL_;
  4.         close test;
  5.         new=c1//c2//c3//c4//c5//c6//c7//c8//c9//c10;
  6.         create a2 var {new};
  7.                 append;
  8.         close a2;
  9. quit;
复制代码


极其粗暴 ……但是一看就懂

使用道具

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

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

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

GMT+8, 2024-4-27 07:43