楼主: yz7891
2319 2

[实际应用] 如何将观测值写入do循环 [推广有奖]

  • 0关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
18 个
通用积分
0
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
615 点
帖子
100
精华
0
在线时间
61 小时
注册时间
2010-3-30
最后登录
2019-6-3

楼主
yz7891 发表于 2018-11-27 17:55:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
例子:
BRAND        Week
A1        100
B3        7
C1        48
AB        34
BD        17
A6        46
A7        79
A8        65
A9        5
A10        72

我想根据week里面的值进行循环,比如处理第一行的时候,循环100次,第二行循环7次,以此类推。
我自己有一个办法如下:
%macro looppp;
        data test1;
        set test;
        %do loop1 = 1 %to 100;
                if week = &loop1. then do;
                        %do loop2 = 1 %to &loop1.;
                        ……
                        %end;
                end;
        %end;
        run;
%mend;

%looppp;

但是我在if里面用lag函数的时候,会取出空值。请问各位大神有没有什么高效的办法呢,比如可以不可以 %do i=1 %to week 这种
二维码

扫码加我 拉你入群

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

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

关键词:有没有

已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
linhaoran 发表于 2018-11-28 00:17:21
在宏外直接循环生成数据,然后进宏里判断处理就行。
data test2;
        set test;
        do i = 1 to week;
        output;
        end;
run;

想在宏里循环的话,可以单独设个变量,tmp=lag(week),然后在if里,判断tmp。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
whymath + 1 精彩帖子
admin_kefu + 20 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 3  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
sgxman 发表于 2018-12-4 18:28:26
已经有人回复了

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

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