全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6292 6
2010-07-15
请教高人怎么从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;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-7-15 08:08:22
这个好像用infile, 分隔符用',' 就可以。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-7-15 08:12:39
但是记录的数量是变的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-7-15 08:17:10
我的程序有问题,请高手指出


用input datatime $ @ / / try @; 也不行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-7-15 12:09:01
请高手指出
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-7-15 13:36:49
data a ;
    infile tests;
    input;
    retain datatime;
    this=_infile_;
    if this=:"Sun" then datatime=this;
    length USER RESOURCE STATUS  NODE  PID  S  STARTED  PRI  PSR  PERCENT_CPU  PERCENT_MEM  TIME $10 program $100;
    array temp(*) $ USER RESOURCE STATUS  NODE  PID  S  STARTED  PRI  PSR  PERCENT_CPU  PERCENT_MEM  TIME  PROGRAM ;
    if this ^=: "Sun" and this ^=:"USER" then do;
       do i=1 to 13;
           temp(i)=scan(this,i,",");
      end;
      output;
  end;
  drop this i;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群