作业帮 > 综合 > 作业

sas lag 或 retain

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 21:31:55
sas lag 或 retain
数据是 9/1 25%
9/2 50%
9/3 70%
9/4 10%
9/5 20%
9/6 32%
9/7 18%
我想得出的结果是 取3天的平均数 去分别比较第4,5,6,7号 的 值 ,如果差别大于20% 就等于 true.以此类推,再取下一组 3天 分别比较 第5,6 ,7号的值 如果差别大于20% 就等于 true.,以此类推.(就是先取1,2,3 的 平均数 和 4,5,6,7 号 比 ,再 做2,3,4 的平均数再和 5,6,7 比 ,取3,4,5 和 6,7 比,最后 做4,5,6 的平均数 和 7 比)
sas lag 或 retain
data test;
input month $ val percent5.;
cards;
9/1 25%
9/2 50%
9/3 70%
9/4 10%
9/5 20%
9/6 32%
9/7 18%
;
run;
*将后面的数据前提,使得第1233457,23456,34567,4567,567,67,7值单独一行;
Data test2;
merge test
test(firstobs=2 keep=val rename=(val=nextval2))
test(firstobs=3 keep=val rename=(val=nextval3))
\x09\x09test(firstobs=4 keep=val rename=(val=nextval4))
\x09\x09test(firstobs=5 keep=val rename=(val=nextval5))
\x09\x09test(firstobs=6 keep=val rename=(val=nextval6))
\x09\x09test(firstobs=7 keep=val rename=(val=nextval7));
run;
*计算123平均值与第4567、234与第567、345与第67、456与第7个数据相减;
data test3;
set test2;
com1 =abs( mean(val, nextval2, nextval3) - nextval4);
com2 =abs( mean(val, nextval2, nextval3) - nextval5);
com3 =abs( mean(val, nextval2, nextval3) - nextval6);
com4 =abs( mean(val, nextval2, nextval3) - nextval7);
run;
*与20%进行比较,判断TRUE和FALSE;
data test4;
set test3;
if com1 > 0.2 then flag1='TRUE' ; else if com1=. then flag1=.; else flag1='FALSE';
if com2 > 0.2 then flag2='TRUE' ; else if com2=. then flag2=.; else flag2='FALSE';
if com3 > 0.2 then flag3='TRUE' ; else if com3=. then flag3=.; else flag3='FALSE';
if com4 > 0.2 then flag4='TRUE' ; else if com4=. then flag4=.; else flag4='FALSE';
*keep month val flag1 flag2 flag3 flag4;
run;