全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1710 6
2014-07-15
我有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












二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-15 11:45:30
复制代码


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

扫码加我 拉你入群

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

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

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
真心想不到办法....还有人会么
二维码

扫码加我 拉你入群

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

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

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;
再一次感谢大神...能加个好友或者留个联系方式么
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群