楼主: burnpark
3415 5

比较复杂的SAS累加问题 [推广有奖]

  • 1关注
  • 2粉丝

已卖:1份资源

讲师

21%

还不是VIP/贵宾

-

威望
0
论坛币
2979 个
通用积分
6.6000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4270 点
帖子
128
精华
0
在线时间
591 小时
注册时间
2009-3-17
最后登录
2024-10-13

楼主
burnpark 发表于 2014-7-10 07:23:42 |AI写论文
200论坛币
  1. data a;
  2. input id day ex;
  3. cards;
  4. 1 5 2
  5. 2 7 3
  6. 3 1 3
  7. 4 11 5
  8. 5 15 7
  9. ;
  10. run
复制代码

数据如上, 我想将变量day每次累加45后依次生成新数据,变量ex为累加的次数。
比如,day=5, ex=2的话。将生成新变量n1=50,n2=95。(n1=5+45, n2=5+45+45)
day=7,ex=3的话。将生成新变量n1=52, n2=97, n3=142。(n1=7+45, n2=7+45+45, n3=7+45+45+45)
以此类推。
请问要怎么编程?

最佳答案

yongyitian 查看完整内容

是不是这样.
关键词:cards Input card Data 怎么编程 怎么编程

沙发
yongyitian 发表于 2014-7-10 07:23:43
是不是这样.

  1. data a;
  2. input id day ex;
  3. cards;
  4. 1 5 2
  5. 2 7 3
  6. 3 1 3
  7. 4 11 5
  8. 5 15 7
  9. ;
  10. run;

  11. proc sql;
  12.     select max(ex) into: maxex
  13.     from a;
  14. quit;

  15. data b;
  16.    array n{&maxex} ;
  17.   set a;
  18.   do i = 1 to ex;
  19.   n[i] = day+45*i;
  20.   end;
  21.   output;
  22.   drop i;
  23. run;
复制代码

藤椅
intheangel 学生认证  发表于 2014-7-10 08:45:33
  1. data a;
  2. input id day ex;
  3. cards;
  4. 1 5 2
  5. 2 7 3
  6. 3 1 3
  7. 4 11 5
  8. 5 15 7
  9. ;
  10. run;

  11. data b;
  12. set a;
  13. array n(100);
  14. do i=1 to ex;
  15. n(i) = day+45*i;
  16. end;
  17. run;
复制代码

板凳
mycpcw 发表于 2014-7-10 09:12:59
学习了

报纸
hopewell 发表于 2014-7-11 16:34:21
  1. data a;
  2.     input id day ex;
  3. cards;
  4. 1 5 2
  5. 2 7 3
  6. 3 1 3
  7. 4 11 5
  8. 5 15 7
  9. ;
  10. data b;
  11.     set a;
  12.     do i=1 to ex;
  13.         var=day+(i*45);
  14.         output;
  15.     end;
  16. run;
  17. proc transpose data=b out=b(drop=_name_) prefix=n;
  18.     by id day ex;
  19.     id i;
  20.     var var;
  21. run;
复制代码

地板
burnpark 发表于 2014-7-11 22:22:58
学习了,你们的方法都很好用。谢谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-24 18:33