4# nkwilling
为了更多的初学者能读懂牛人的代码,我来翻译一下,就如
soporaeternus 哥们说的,第三类人,翻译人员
data a; /*创建数据集A*/
input x @@;
cards;
2 5 6 9 8 2 6 5 4 7 9 5 6 7
;
run;
data aa; /*创建数据集AA,变量换名为X1*/
set a;
rename x=x1;
run;
data b;
DO row=5 TO 14; /*外循环,外循环每执行一次,内循环执行5次*/
set a point=row; /*复制指定的观测,ROW=5时说复制数据集A中的第五条观测对象的X的变量值*/
do col=row-4 to row; /*内循环,同样建立一个指针变量COL*/
set aa point=col; /*从指定的变量COL的值处取AA中指定的观测对象的X1的变量值,例如当COL=1的时候,就复制AA数据集中第一个条观测*/
retain xxx xx;/*初始化变量XXX XX*/
xx=max(x1,x);/*当第一次内循环时,也就是COL=1时,从AA取出的X1的第一条观测值和外循环取出的X的第五条观测值进行比较大小,并将较大值赋值给XX*/
xxx=max(xxx,xx); /*比较XXX XX,将值大者赋值给XXX*/
put xx= @; /*在LOG输出XX. XXX X1 X*/
put xxx= @;
put x1= @;
put x=;
end; /*结束一次内循环*/
output;
xxx=0; /*XXX值清0*/
put xxx=; /*输出XXX*/
END; /*结束外循环*/
stop; /*结束循环程序*/
keep xxx; /*结果数据集保留XXX变量*/
run;
大家如何还是不能理解可以这样等价来看:
xx=8 xxx=8
x1=2 x=8 row=5 col=1
xx=8 xxx=8
x1=5 x=8 row=5 col=2
xx=8 xxx=8
x1=6 x=8 row=5 col=3
xx=9 xxx=9
x1=9 x=8 row=5 col=4
xx=8 xxx=9
x1=8 x=8 row=5 col=5
xxx=0
xx=5 xxx=5 x1=5 x=2
row=6 col=1
xx=6 xxx=6 x1=6 x=2
row=6col=2
xx=9 xxx=9 x1=9 x=2
row=6 col=3
xx=8 xxx=9 x1=8 x=2
row=6 col=4
xx=2 xxx=9 x1=2 x=2
row=6 col=5
xxx=0
xx=6 xxx=6 x1=6 x=6
xx=9 xxx=9 x1=9 x=6
xx=8 xxx=9 x1=8 x=6
xx=6 xxx=9 x1=2 x=6
xx=6 xxx=9 x1=6 x=6
xxx=0
xx=9 xxx=9 x1=9 x=5
xx=8 xxx=9 x1=8 x=5
xx=5 xxx=9 x1=2 x=5
xx=6 xxx=9 x1=6 x=5
xx=5 xxx=9 x1=5 x=5
xxx=0
xx=8 xxx=8 x1=8 x=4
xx=4 xxx=8 x1=2 x=4
xx=6 xxx=8 x1=6 x=4
xx=5 xxx=8 x1=5 x=4
xx=4 xxx=8 x1=4 x=4
xxx=0
xx=7 xxx=7 x1=2 x=7
xx=7 xxx=7 x1=6 x=7
xx=7 xxx=7 x1=5 x=7
xx=7 xxx=7 x1=4 x=7
xx=7 xxx=7 x1=7 x=7
xxx=0
xx=9 xxx=9 x1=6 x=9
xx=9 xxx=9 x1=5 x=9
xx=9 xxx=9 x1=4 x=9
xx=9 xxx=9 x1=7 x=9
xx=9 xxx=9 x1=9 x=9
xxx=0
xx=5 xxx=5 x1=5 x=5
xx=5 xxx=5 x1=4 x=5
xx=7 xxx=7 x1=7 x=5
xx=9 xxx=9 x1=9 x=5
xx=5 xxx=9 x1=5 x=5
xxx=0
xx=6 xxx=6 x1=4 x=6
xx=7 xxx=7 x1=7 x=6
xx=9 xxx=9 x1=9 x=6
xx=6 xxx=9 x1=5 x=6
xx=6 xxx=9 x1=6 x=6
xxx=0
xx=7 xxx=7 x1=7 x=7
xx=9 xxx=9 x1=9 x=7
xx=7 xxx=9 x1=5 x=7
xx=7 xxx=9 x1=6 x=7
xx=7 xxx=9 x1=7 x=7
xxx=0