楼主: 等风来撒
1742 6

继续是条件语句问题......求大神 ........... [推广有奖]

  • 0关注
  • 0粉丝

博士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
490 个
通用积分
35.4021
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
2497 点
帖子
220
精华
0
在线时间
233 小时
注册时间
2014-1-5
最后登录
2025-7-23

楼主
等风来撒 发表于 2014-7-15 11:21:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有100多个变量,需要判断条件是否满足后然后另新变量等于1,否则等于0,如果新变量等于1了,那么他10之后10期的值只能等于0,

例如:if a1<333 then b1=1 and b1之后的10个值只能等于0,然后从第11个值开始重新判断......

然后判断a3 a5 a7 a9这样一直下去.........

请问怎么破............?

补充一下,或者说现在有一列变量b,形式如下
1
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
,
我目的就是想把如果第1行有的话,保留第一个1,那么后面10行全是0(即使有1),然后再开始判断,如果又有1,那么后面10行又是0,即确保出现一个1之后隔了10行才会出现第二个1












二维码

扫码加我 拉你入群

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

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

关键词:多个变量 新变量

这个...........

沙发
freerunning_sky 在职认证  发表于 2014-7-15 11:45:30
  1. data out;
  2.         set in;
  3.         array a(*) a1-a100;
  4.         array b(*) b1-b100;
  5.         do i=1 to dim(a);
  6.                 if label_i>=i-10 then b(i)=0;else
  7.                 if a(i)<333 then b(i)=1;else
  8.                 b(i)=0;

  9.                 if b(i)=1 then label_i=i;
  10.         end;
  11. run;
复制代码


判断条件根据实际情况修改

藤椅
等风来撒 发表于 2014-7-15 12:20:30
freerunning_sky 发表于 2014-7-15 11:45
判断条件根据实际情况修改
我改成这样..还是有两个重复的1生成



data ahdata.f3;
set ahdata.f3;
array jc(*) jc1-jc172;
array buy(*) buy1-buy172;
array ml10jc(*)  ml10jc1-ml10jc172;
array sl10jc(*)  sl10jc1-sl10jc172;
do i=1 to dim(jc);
if label_i>=i-10 then buy(i)=0;else
if jc(i)<ml10jc(i)-2*sl10jc(i) then buy(i)=1;else
buy(i)=0;
if buy(i)=1 then label_i=i;
end;
run;

板凳
等风来撒 发表于 2014-7-15 14:11:32
真心想不到办法....还有人会么

报纸
pobel 在职认证  发表于 2014-7-15 15:17:40
等风来撒 发表于 2014-7-15 14:11
真心想不到办法....还有人会么
data test;
   array b(6);
   do i=1 to 30;
      do j=1 to 6;
             b(j)=ranuni(0)>0.5;
          end;
          output;
        end;
        drop i j;
run;

*** b1, b2, ... , b6是原来的数, c1, c2, ... c6是处理之后的数。;

%let num=6;
data wanted;
    array b(&num);
        array c(&num);
        array flg(&num);
        array count(&num);
        set test;

        do i=1 to &num;
           c(i)=b(i);
           if count(i)<10 and flg(i) then c(i)=0;
           if c(i)=1 then do; count(i)=0; flg(i)+1; end;
           else count(i)+1;
        end;
        drop i flg: count:;
run;
          
      

地板
等风来撒 发表于 2014-7-15 15:45:25
pobel 发表于 2014-7-15 15:17
data test;
   array b(6);
   do i=1 to 30;
再一次感谢大神...能加个好友或者留个联系方式么

7
freerunning_sky 在职认证  发表于 2014-7-15 17:20:40
等风来撒 发表于 2014-7-15 12:20
我改成这样..还是有两个重复的1生成
这个东西就是判断一下就可以了,你稍微修改一下就可以了

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

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