|
暂时只想到这个笨方法,如果你的四门成绩有一门缺失就有一个空格的话(4门缺失就是4个空格),考虑到了姓名和成绩之间也是空格隔开,在读取数据的时候很难和后面的区分开来,所以先作为一个变量全部读进来再做处理。
data a;
input raw $50.;
cards;
Fred 869750611980
Wilma 921432 653
aa
bb 586 894528
cc 258 568
dd 695 789
;run;
%macro mm;
data b;
format test1-test4 12.1;
set a;
name=substr(raw,1,find(raw," ")-1);
test=substr(raw,find(raw," ")+1,20);
testnew=tranwrd(test," "," ");
%do i=1 %to 4;
if substr(testnew,&i*3-2,2)^=''
then test&i=input(substr(testnew,&i*3-2,2),12.)+input(substr(testnew,&i*3,1),12.)*0.1;
%end;
run;
%mend;
%mm;
如果两个成绩之间有两个成绩缺失(例dd),但是只有一个空格的话emmm那情况就比较复杂了,需要判断四门成绩abcd中到底是bc缺失还是bd缺失,还请其他大大帮忙补充。
|