楼主: Jessie_yj
1974 2

[原创博文] SAS循环判断 [推广有奖]

  • 0关注
  • 0粉丝

大专生

26%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
353 点
帖子
28
精华
0
在线时间
22 小时
注册时间
2011-4-25
最后登录
2014-8-21

楼主
Jessie_yj 发表于 2012-9-1 12:19:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个数据集,如下左图。
想做一个循环,首先判断x,当x=1时,则判断从x=1的这行开始进行。
之后判断y,如果y<9,那么number记录该行数值,t记录‘ok’
如果y>=9,那么判断下一行的y值,直到y值小于9为止,此时number记录行数,t记录‘ok'

x

y

x

y

number

t

7

3

7

3

 

5

2

5

2

 

3

9.2

3

9.2

 

1

7

1

7

4

ok

4

5

4

5

 

4

4

4

4

 

1

9.6

1

9.6

 

3

9.7

3

9.7

 

8

9.4

8

9.4

 

2

3

2

3

10

ok

7

2

7

2

 

 

data a;

input x y @@;

cards;

7 3 5 2 3 9.2 1 7 4 5 4 4 1 9.6 3 9.7 8 9.4 2 3 7 2

;

run;

data b;

set a (firstobs=1) nobs=n;

if _n_>1 then do;

   if x=1 then do;     

     if y<9 then do; number=_n_;t='ok';end;

       if y>=9 then do;

          do i=_n_+1;

          set a point=i;

          if y<9 then do; number=_n_;t='ok';     end;

            else i=i+1;

       end;

      end;

      end;

end;

run;

请教一下,我的程序哪里出问题呢?无法得到上述右图的表格。谢谢

二维码

扫码加我 拉你入群

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

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

关键词:numbert Number First cards Input number 记录

沙发
Jessie_yj 发表于 2012-9-1 13:22:34 来自手机
或者有没有人知道怎么编程可以得到这个结果呀?麻烦大家了

藤椅
jjtww 发表于 2012-9-1 14:07:24
我编一个,仅供参考:
  1. data c;
  2.    retain r 1 s 0;
  3.    set a;
  4.    t=0;
  5.    if x=1 then do;
  6.            s+1;
  7.                    r=1;
  8.         end;
  9.    if y<9 then t+1;
  10.    t_1=lag(t);
  11.    if s>0 and t=1 and t_1=0 and r=1 then do;
  12.           number=_n_;
  13.                   flag='ok';
  14.                   r=0;
  15.   end;
  16. run;
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:33