- data a;
- input x $@@;
- cards;
- 330111198202221324
- ;
- run;
- data TJ4;
- set a;
- array tmp[*] _character_;/*数据原来是字符型的,将其建立一个字符型的数组tmp*/ /*怎么查看我的数组建立的情况*/
- call symputx("nvar",dim(tmp));/*将定义的这个数组tmp的元素个数作为宏变量nvar,取掉前后空格*/
- run;
- data tmp;
- set TJ4 end=eof; /*end=eof里面的end代表最后一个observation, eof取值为1或者0, 若为1,则当前观测为最后观测, 若为0, 则当前观测不是最后观测值*/
- array tmp[*] _character_;
- length vars $ 32767;/*不知道数值内容有多少,设大一些,是这个意思吗*/
- retain vars "";/*生成一个新变量vars,为空值*/
- array number[&nvar.]; /*建立同样多元素个数的数组number*/
- do i=1 to dim(tmp);
- number[i]=input(tmp[i],best.); /*格式为best数值型*/ /*从数组的第一个元素开始,逐一将tmp的内容赋值到number*/
- if eof then vars=catx(" ",vars,cats(vname(number[i]),"=",vname(tmp[i]))); /*如果赋值到最后一个观测值,将tmp数组的名字命名在number数组中。vname函数是返回最大值对应的变量名。为什么要有这一步*/
- end;
- if eof then call symputx ("vars",vars);/*这一步什么意思*/
- drop _character_ i;
- run;
- data TJ5;
- set tmp;
- rename &vars.;/*这一步什么意思,为什么后面有个.*/
- run;
另外,程序中几个地方我不太明白,哪位高手能解释一下吗?我把问题附在程序中了,谢谢,谢谢




雷达卡



京公网安备 11010802022788号







