75
第7第 第第第第第第 - 第第第第 第第第 第第第第第第第第第第 第第第 [email protected]. cn

07数据加工整理-修改与选择观测

  • Upload
    peng-wu

  • View
    248

  • Download
    0

Embed Size (px)

Citation preview

  • 7 - [email protected]

  • Sheet1

    Delete

    Lostcard

    Stop

    Abort

    Where

    Output

    Remove

    Replace

    List

    Call

    Missing

    ;

    Error

    Sheet2

    Sheet3

  • variable=expression;

    Sheet1

    variable

    expression

    Sheet2

    Sheet3

  • 7.1 proc sort data=fdata.class;by sex; data a;set fdata.class;by sex;n=_N_; error=_error_; first_s=first.sex; last_s=last.sex; proc print;run;x=a+b; /* xab*/t(2)=sum(of x1-x5); /**/a=a+b; /*ab*/

  • LENGTH

    7.2 data a;stocd='0001'; /*4 */stocd ='600001'; /*stocd4stocd=6000*/proc print;run;

  • 7.3 LENGTH data a;length stocd 6;stocd='0001';stocd ='600001';proc print;run;

  • Sheet1

    8Length a 4;

    X=a;

    X8

    Length a $4;

    X=a;

    X4

    X=ABC;

    X=ABCDEF;

    X3

    Length a $4 b $6;

    X=a||b;

    X10

    Length a $4;

    X=a||CAT;

    X=a||CATIP;

    X7

    Sheet2

    Sheet3

  • Variable+expression;

    Sheet1

    variable

    expression

    Sheet2

    Sheet3

  • 0 0 A+(-B)+A-B

  • 7.4 SUMRETAINdata a (keep=name height s_h);set fdata.class ;s_h+height;proc print;run;

    data b (keep=name height s_h);set fdata.class ;s_h=sum(s_h, height, 0); retain s_h 0; run;

  • 7.5 SUMX+X*XX*XSUMX data a (keep=date uss);set fdata.r_day;uss+r600600**2; /*USSr600600 */run;

    7.6 data a(keep=nmis);set fdata.indcls;nmis+sector^=' ';run;NMISSECTORSECTOR

  • DELETE DELETESASDATA

    DELETE;

  • 7.7 data a;set fdata.class;if sex='F' then delete;run;FDATASEX=F

  • 7.8 data a;set a;delete;run;AADELETE

  • LOSTCARD LOSTCARDLOSTCARDSAS

    LOSTCARD;LOSTCARDIF-THEN

    LOSTCARD

  • 7.9 data a;input id 1-3 reject #2 idc 1-3 pass; if id ne idc then do;put '' id= idc=;lostcard;end;cards;301 32301 61432302 53302 83171400 92845411 46411 99551;proc print;title2 '';run;

  • LOSTCARD SAS; DATA; INPUT; IFSAS IFSAS_N_

  • 7.10 3 data a;input id1 x $ #2 id2 y $ # 3 id3 z $;if id1 ne id2 or id2 ne id3 then lostcard;cards;101 A102 B102 B103 C103 C103 C104 D105 E105 E105 E;proc print;title '3';run;

  • DATA3112214235

    LOG

    NOTE: LOST CARD.RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----05 101 A6 102 B7 102 BNOTE: LOST CARD.8 103 CNOTE: LOST CARD.9 103 CNOTE: LOST CARD.11 104 D12 105 E13 105 ENOTE: WORK.A 2 6

  • STOPSTOPDATASTOPSAS

    STOP

  • 7.11 DATAdata B_shares;infile "d:\fdata\B_shares.txt" firstobs=2 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout 16.;if _n_=21 then stop;proc print; /*OUTPUT */run;

  • data B_shares;infile "d:\fdata\B_shares.txt " firstobs=2 obs=21 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout 16.;proc print;run;STOPDATAPROCSTOPDATAPROC

  • ABORT ABORTDATADATAPROCABORTABORTSAS

    :ABORT|;

  • DATALOGOBS=0SASDATAPROC

  • DATAABORTLOGABORTDATAABORTDATAPROCDATADATAPROC

  • ABEND SAS

    LOG,ABORTABEND

  • RETURN SAS LOG,ABORTRETURN

  • n SASABENDRETURNnnnabort abend 255;abort return 255;RETURNn, SASn

  • 7.12 ABORT data a;input ssn pay ;if _error_ then abort;cards;111 100aaa 200444 300;proc print;run;_error_ 1SASssnaaaSAS_error_1abort

  • 7.13 data a;do n=3,5,7,4;set fdata.class point=n;if _error_=1 then abort;aaa=_error_;output; end;stop;run;

  • WHERE WHEREWHERESETMERGEUPDATEMODIFYWHERESASSASWHEREIF-THENWHEREIFWHERE

  • WHERE where-expression;WHERE

    Sheet1

    Between-And

    Is Missing|Is Null

    Contains|?

    Like

    Same-And

    Sheet2

    Sheet3

  • 7.14 BETWEEN-ANDIS MISSING|IS NULL Where hstocd between 600000 and 600899;Where taxes between salary*0.30 and salary*0.50;Where taxes not between salary*0.30 and salary*0.50;Where idnum is missing; /* */Where name is null

    LIKE %; _LIKE

  • 7.15 DianaDiane Dianna DianthusDyan. LIKEDLIKE

    Like 'D_an'; /* Dyan */Like 'D__an_';/* */Like 'D_an__'; /* Diana, Diane, Dianna, Dyan */Like 'D_an%'; /* */Not like 'D_an%'; /* */

  • SAMEANDWHERE candition-1;[SAS]WHERE SAME AND condition -2[SAS]WEHERE SAME AND condition-n;

    SASSAME-AND

  • 7.16 SAME-ANDWHEREproc gplot data=fdata.a1a0001;plot clpr*date=1;where year(date)>1996;where same and year(date)
  • 7.17 0 Where x;Where x and y; Where x/y;

    7.18 Where c^=' '; where c is not missing;C

  • 7.19 Where x between 1 and 5; where 1
  • WHERE IF DATAWHEREIFWHEREIF WHEREIF WHEREIFSAS WHERESASIFSASINPUT WHEREIFWHEREIF SASWHEREIF

  • 7.21 WHERE data a;set fdata.a000001;where _n_
  • OUTPUT OUTPUT

    OUTPUT ;

    OUTPUTSAS

    Sheet1

    data-set-name

    Sheet2

    Sheet3

  • 7.22 data A;input ID $ score1- score3;drop score1- score3;score=score1; output;score=score2; output;score=score3; output;cards;02126 99 96 9402128 89 90 88;proc print;run;IDSCORE.

  • 7.23 DATA data F M;set fdata.class;if sex='F' then output F;else if sex='M' then output M;run;DATAFSEXFMSEXF

  • 7.24 DATAdata age1 age2;input name $ age;if age
  • 7.25 proc sort data=fdata.dd_c;by date;data a;set fdata.dd_c ;by date;if first. date then sum_c=0;sum_c+sum;keep date sum_c ;if last.date then output;run;1999first. date last. date

  • 7.26 MEANS proc sort data=fdata.dd_c;by date;proc means data=fdata.dd_c noprint;by date;var sum;output out=sum sum=sum_c;run;

  • REMOVEREMOVESASREMOVEMODIFYREMOVEREMOVEDELETEIFMODIFY

  • REMOVE ;

    Sheet1

    data-set-name

    Sheet2

    Sheet3

  • 7.27 SAS data fdata.accounts;input acctnum credit;cards;1001 15001002 49001003 3000;data fdata.Accounts;;modify fdata.Accounts;if acctnum=1002 then remove; /*acctnum=1002 */proc print data= fdata.Accounts;title'Edited Data Set';

  • REPLACE REPLACEREPLACEMODIFYREPLACEOUTPUTREPLACEOUTPUTSAS REPLACEMODIFYOUTPUT

  • REPLACE;

    Sheet1

    data-set-name

    Sheet2

    Sheet3

  • 7.28 data master;input name $ id $ phonenum;cards;Kevin 1100100 3750066 Sandi 11000001 3756666 Cindy 11000002 6758966 Jim 11000003 6750088 ;data trans;input name $ id $ phonenum;cards;. 1100100 83750066. 11000001 83756666Vivan 21000001 83750387;

  • data master;modify master trans;by id ;if _iorc_=%sysrc (_sok) then replace; /*master */else if _iorc_=%sysrc (_dsenmr) then do;error=0; _iorc_=0;output;end;run;proc print data=master;title 'MASTER';run;TRANS MASTERMASTERSYSRCMASTER_IORC__DSENMR :The TRANSACTION data set observation does not exist in the MASTER data set. _SOK :The function was successful.

  • data master;input name $ id $ phonenum;cards;Kevin 1100100 3750066 Sandi 11000001 3756666 Cindy 11000002 6758966 Jim 11000003 6750088 ;data trans;input name $ id $ phonenum;cards;. 1100100 83750066. 11000001 83756666Vivan 21000001 83750387;data master;modify master trans;by id ;run;

  • MISSING MISSINGMISSING

    Missing charcter1charctern; charcter

  • 7.29 data period_a;missing X I;input Id $4. Foodpr1 Foodpr2 Foodpr3 Coffeem1 Coffeem2;datalines;1001 115 45 65 I 781002 86 27 55 72 861004 93 52 X 76 881015 73 35 43 112 1081027 101 127 39 76 79;MISSINGXIMISSINGXI

  • LIST, CALL, NULLERROR.

  • LIST LISTSAS LIST

    LIST;

  • 7.30 INPUTLISTdata a;input x y;if x
  • PUTLIST PUTSAS

    PUTLIST LISTDATAPUT LISTPUT LISTPUT LISTLOGPUT LISTINPUTPUT LISTPUTPUT

  • CALL CALL

    Call routine (parameter-1);

    Sheet1

    Routine

    Sheet2

    Sheet3

  • CALL

    Sheet1

    Sheet2

    Sheet3

  • Sheet1

    Sound

    Symput

    System

    Lable

    Vname

    Execute

    Sheet2

    Sheet3

  • 7.31 data _null_;call sound(20,800); /*20800*1/80 */run;2020800*1/80

  • 7.32 DATA data a;call symput ('text1', 'march'); /*marchtext1 */call symput ('beta', 100); /*100beta */run;

    proc reg data=fdata.r_month outest=est noprint;model r600600=rm;data est; set est; call symput('beta01', intercept); /*DATAbeta01*/call symput('beta11', rm); /*DATAbeta11*/call symput('sigma1', _rmse_);run;

  • 7.33 data _null_;call system('dir *.sas'); /*dir *.sas */run;

  • NULL (;)SAS CARDSDATALINES CARDS4DATALINES4

  • 7.34 data a;input x y z;if x=. Then goto find;list;find : ;drop x;cards;1 2 5. 1 32 5 8. 3 9;proc print;run;DATACARDSSAS SAS;PROC PRINT;

  • ERROR ERROR_error_1SAS

    ERROR ;

    Sheet1

    Sheet2

    Sheet3

  • ERROR _ERROR_1 FILE LOG PUT FILEFILE

  • 7.35 data a;input name $ type $ age ;if type='teen' & age >19 then error 'type and age don"t macth' age=;cards;Wu teen 20Li teen 12Cindy adult 28;

  • data a;input name $ type $ age ;if type='teen' & age >19 then do;put 'type and age don"t macth' age=;_error_=1;end;cards;Wu teen 20Li teen 12Cindy adult 28;run;ERRORPUT_ERROR_FILE