请教高人怎么从raw data里读的mutliple records来创造one obversation 但record的个数是变的。先谢了。
具体的说,有raw data,每个记录有3种行,第1行是日期和时间,第2行是下面信息的标题,第3种是信息,如果没有第3种信息,时间也就不显示在output上了。output的第一列是日期和时间.
Sun Jul 4 16:01:02 MST 2010
USER,RESOURCE,STATUS,NODE,PID,S,STARTED,PRI,PSR,%CPU,%MEM,TIME,PROGRAM
Sun Jul 4 16:03:02 MST 2010
USER,RESOURCE,STATUS,NODE,PID,S,STARTED,PRI,PSR,%CPU,%MEM,TIME,PROGRAM
syoung,BASESAS,running,ap05,16107,S,16:01:17,23,0,1.7,0.2,00:00:01,/u14/apps/prod/TADW/code/extract-response.sas
Sun Jul 4 16:05:02 MST 2010
USER,RESOURCE,STATUS,NODE,PID,S,STARTED,PRI,PSR,%CPU,%MEM,TIME,PROGRAM
syoung,BASESAS,running,ap05,16107,S,16:01:17,23,0,0.8,0.2,00:00:01,/u14/apps/prod/TADW/code/extract-response.sas
Sun Jul 4 16:07:02 MST 2010
USER,RESOURCE,STATUS,NODE,PID,S,STARTED,PRI,PSR,%CPU,%MEM,TIME,PROGRAM
gsethi,BASESAS,running,ap04,13343,S,16:05:58,22,0,7.7,0.1,00:00:04,/disk/03/u03/uk/analysis_2010/door_drop/eligible_vol/cms.sas
syoung,BASESAS,running,ap05,16107,S,16:01:17,23,0,0.5,0.2,00:00:01,/u14/apps/prod/TADW/code/extract-response.sas
Sun Jul 4 16:09:02 MST 2010
USER,RESOURCE,STATUS,NODE,PID,S,STARTED,PRI,PSR,%CPU,%MEM,TIME,PROGRAM
gsethi,BASESAS,running,ap04,13343,S,16:05:59,22,0,7.7,0.1,00:00:14,/disk/03/u03/uk/analysis_2010/door_drop/eligible_vol/cms.sas
syoung,BASESAS,running,ap05,16107,S,16:01:17,23,0,0.4,0.2,00:00:01,/u14/apps/prod/TADW/code/extract-response.sas
怎么能生产下面的output
Obs datetime user resource status node pid s started pri psr cpu
1 04JUL10:16:03:02 syoung BASESAS running ap05 16107 S 16:01:17 23 0 1.7
2 04JUL10:16:05:02 syoung BASESAS running ap05 16107 S 16:01:17 23 0 0.8
3 04JUL10:16:07:02 gsethi BASESAS running ap04 13343 S 16:05:58 22 0 7.7
4 04JUL10:16:07:02 syoung BASESAS running ap05 16107 S 16:01:17 23 0 0.5
5 04JUL10:16:09:02 gsethi BASESAS running ap04 13343 S 16:05:59 22 0 7.7
6 04JUL10:16:09:02 syoung BASESAS running ap05 16107 S 16:01:17 23 0 0.4
Obs mem time program
1 0.2 00:00:01 /u14/apps/prod/TADW/code/extract-response.sas
2 0.2 00:00:01 /u14/apps/prod/TADW/code/extract-response.sas
3 0.1 00:00:04 /disk/03/u03/uk/analysis_2010/door_drop/eligible_vol/cms.sas
4 0.2 00:00:01 /u14/apps/prod/TADW/code/extract-response.sas
5 0.1 00:00:14 /disk/03/u03/uk/analysis_2010/door_drop/eligible_vol/cms.sas
6 0.2 00:00:01 /u14/apps/prod/TADW/code/extract-response.sas
我的思路是把第2行信息的标题,就不读了。然后下一行的长度是否和第一行的长度一样,如果一样,就把它做为一条新的记录,再读。
data a (drop=try);
infile tests dlm=',';
*retain datatime;
input datatime $ @;
input;
input try @;
if length(try)=length(datatime)then datatime=try;
else do user=try;
input RESOURCE $ STATUS $ NODE $ PID $ S $ STARTED $ PRI $ PSR $ PERCENT_CPU $ PERCENT_MEM $ TIME $ PROGRAM $;
output;
end;
run;