/* ===================================================== */ /* Example 1: Transformation and Subsetting Statement. */ /* ===================================================== */ OPTIONS LINESIZE=120 PAGESIZE=60; DATA D1; * INFILE 'A:\ex4-1.dat' firstobs=2; ; INPUT #1 @1 (V1-V7) (1.) @9 (AGE) (2.) @12 (IQ) (3.) @16 (NUMBER) (2.) #2 @3 (SATV) (3.) @7 (SATM) (4.); /* Place Transformation and Subsetting statements */ SAT = SATV+SATM; CARDS; 2234134 22 98 1 520 490 3412334 20 105 2 440 410 5323132 32 90 3 610 590 3241232 9 119 4 470 450 5323123 8 101 5 410 390 3213241 24 110 6 510 460 2312321 43 99 7 580 350 1231222 12 94 8 630 600 1434243 32 100 9 580 590 5434532 16 107 10 550 610 ; PROC PRINT DATA = D1; RUN; PROC MEANS DATA = D1; RUN; DATA D2; SET D1; /* Place Transformation and Subsetting statements */ QP1=V1; QP2=V2; QN3=V3; QP4=V4; QP5=V5; QN6=V6; QP7=V7; /* Duplicating Varaibles */ RENAME V1=Q1 V2=Q2 V3-V7=Q3-Q7; /* Renaming Variables */ SAT = SATV+SATM; SATAVG = (SATV+SATM)/2; /* Arithmetic Transformation */ SATVGRP=2; IF SATV LT 500 THEN SATVGRP = 0; ELSE IF SATV GE 500 THEN SATVGRP = 1; /* IF-THEN Statement */ * KEEP V1-V7 AGE IQ NUMBER SATV SATM; /* KEEP Statement */ * DROP V1-V7; /* DROP Statement */ RUN; PROC PRINT DATA=D2; VAR SATV SATVGRP; RUN; PROC MEANS DATA = D2; VAR SAT; RUN; /* Taking a subset of the data */ DATA D3; SET D1; IF SAT > 1000; PROC PRINT DATA=D3; RUN; /* ===================================================== */ /* Example 2: An example on concatenating two data sets */ /* ===================================================== */ options nodate; data A; input name $ satv satm @@; cards; john 520 500 sally 610 640 fred 490 470 emma 550 560 ; data B; input name $ satv satm @@; cards; susan 710 650 james 450 400 cheri 570 600 will 680 700 ; data new; set A B; proc print data=new; run; /* What if A and B don't have exactly the same variables? /* ===================================================== */ /* Example 3: An example on merging two data sets */ /* ===================================================== */ data A; input name $ ssn satv satm @@; sat = satv + satm; drop satv satm; cards; john 2121 520 500 sally 3454 610 640 fred 7653 490 470 emma 1234 550 560 ; data B; input name $ ssn GPA @@; cards; JOHN 2121 2.70 SALLY 3454 3.25 FRED 7653 2.20 EMMA 1234 2.50 ; /* To merge data sets, one must sort them according to one common variable first */ proc print data=A; run; proc sort data=A; by ssn; proc print data = A; run; proc print data=B; run; proc sort data=B; by ssn; proc print data = B; run; data C; merge A B; by ssn; run; proc print data = C; run; /* Note the change in NAME - which is also a common varaible in both data sets */ /* What if one record is deleted from A or B??check log file for deleted observation during merging.) */