楼主: 木夏a
3880 3

[问答] SAS data步循环 [推广有奖]

  • 0关注
  • 0粉丝

初中生

38%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
115 点
帖子
7
精华
0
在线时间
19 小时
注册时间
2014-3-5
最后登录
2018-4-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
还款数据集,还款类别名和对应的值分别记录在name和data变量中,但是同一类别对应的变量名不一定相同,现把同一类别的数据整理在一个变量下。举个栗子:
data a;
input name1 $ data1 name2 $ data2;
datalines;
k 1 p 2
p 2 k 3
p 3 k 1
;
run;

data abc;
set a;
%let i=1;
do while(&i.<=2);
if name&i.="k" then data_k=data&i.;
else if name&i.="p" then data_p=data&i.;
%let i=%eval(&i.+1);
end;
run;
这样编程错在哪?求指导。。。。

二维码

扫码加我 拉你入群

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

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

关键词:data步 Data Input Lines while 记录

回帖推荐

prince315 发表于4楼  查看完整内容

原来编码问题在于,执行时会在data步执行前,将所有的宏变量的赋值跟解析完成,所以起不到你想要的循环效果。
沙发
木夏a 发表于 2016-10-16 16:53:25 |只看作者 |坛友微信交流群
up up up

使用道具

藤椅
wang1839 在职认证  发表于 2016-10-16 17:52:13 |只看作者 |坛友微信交流群
  1. %macro loop;
  2. %do i=1 %to 2;
  3. if name&i="k" then data_k=data&i;
  4. else if name&i="p" then data_p=data&i;
  5. %end;
  6. %mend;


  7. data abc;
  8. set a;
  9. %loop;
  10. run;
复制代码
A man who is frustrated will never stand up.

使用道具

板凳
prince315 在职认证  发表于 2016-10-17 10:58:55 |只看作者 |坛友微信交流群
原来编码问题在于,执行时会在data步执行前,将所有的宏变量的赋值跟解析完成,所以起不到你想要的循环效果。

使用道具

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

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

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

GMT+8, 2024-4-20 12:26