/**********************************************************************/
/* The following OPTIONS and TITLE statements are used */
/* with all examples from this article that do not explicitly */
/* contain other settings: */
options nodate nonumber nolabel ls=64 ps=90;
title;
/**********************************************************************/
/* The following SAS data set, SASUSER.HOUSES, is used to */
/* supply the data for most examples from this article: */
STYLE SQFEET BEDROOMS BATHS STREET PRICE
RANCH 1250 2 1.0 Sheppard Avenue $64,000
SPLIT 1190 1 1.0 Rand Street $65,850
CONDO 1400 2 1.5 Market Street $80,050
TWOSTORY 1810 4 3.0 Garris Street $107,250
RANCH 1500 3 3.0 Kemble Avenue $86,650
SPLIT 1615 4 3.0 West Drive $94,450
SPLIT 1305 3 1.5 Graham Avenue $73,650
CONDO 1390 3 2.5 Hampshire Avenue $79,350
TWOSTORY 1040 2 1.0 Sanders Road $55,850
CONDO 2105 4 2.5 Jeans Avenue $127,150
RANCH 1535 3 3.0 State Highway $89,100
TWOSTORY 1240 2 1.0 Fairbanks Circle $69,250
RANCH 720 1 1.0 Nicholson Drive $34,550
TWOSTORY 1745 4 2.5 Highland Road $102,950
CONDO 1860 2 2.0 Arcata Avenue $110,700
/**********************************************************************/
data sample;
input x $1.;
cards;
1
a
A
z
Z
\
;
/* OUTPUT 1a-1b */
proc freq;
tables x / nopercent nocum;
run;
/**********************************************************************/
proc sort data=sasuser.houses out=houses;
by style;
/* OUTPUT 2 */
proc freq data=houses;
by style;
tables bedrooms / nopercent;
run;
/**********************************************************************/
/* OUTPUT 3 */
proc means data=sasuser.houses nway mean;
class style;
var sqfeet;
run;
/**********************************************************************/
/* OUTPUT 4 */
proc tabulate data=sasuser.houses format=3. noseps
order=freq;
class style bedrooms;
table style*bedrooms, n / rts=23;
run;
/**********************************************************************/
/* OUTPUT 5 */
proc tabulate data=sasuser.houses format=3. noseps
order=freq;
class style bedrooms;
table style*bedrooms, n / rts=23 printmiss;
run;
/**********************************************************************/
/* OUTPUT 6 */
proc report data=sasuser.houses nowd headskip;
column bedrooms;
define bedrooms / group format=numf. order=internal;
run;
/**********************************************************************/
data sample;
length dept $ 5;
input dept id;
cards;
PET 100
PET 110
PET 120
PET 199
PLANT 200
PLANT 210
PLANT 220
PLANT 299
;
proc format;
value idfmt
100='CAT' 110='DOG' 120='FISH' 199='OTHER'
200='CACTUS' 210='IVY' 220='FERN' 299='OTHER';
/* OUTPUT 7 */
proc tabulate data=sample noseps;
class dept id;
table dept*id, n;
format id idfmt.;
run;
/**********************************************************************/
proc format;
value bedfmt 1='ONE' 2='TWO' other='OTHER';
data houses;
set sasuser.houses end=last;
output;
if last then do;
bedrooms=.;
output;
end;
format bedrooms bedfmt.;
/* OUTPUT 8a */
proc print data=houses;
title "WORK.HOUSES";
var bedrooms;
format bedrooms;
/* OUTPUT 8b */
proc freq data=houses;
title1 "PROC FREQ";
title2 "Without MISSING Specified";
tables bedrooms / nocum nopercent;
run;
/* OUTPUT 8c */
proc report data=houses nowd headline;
title1 "PROC REPORT";
title2 "Without MISSING Specified";
column bedrooms n;
define bedrooms / group width=8;
run;
/**********************************************************************/
/* OUTPUT 9a */
proc freq data=houses;
title1 "PROC FREQ";
title2 "With MISSING Specified";
tables bedrooms / nocum nopercent missing ;
run;
/* OUTPUT 9b */
proc report data=houses nowd headline missing;
title1 "PROC REPORT";
title2 "With MISSING Specified";
column bedrooms n;
define bedrooms / group width=8;
run;
/**********************************************************************/
options formdlim=' ';
proc sort data=sasuser.houses out=houses;
by bedrooms;
proc format;
value numf 3='GROUP A' 1,2,4='GROUP B';
/* OUTPUT 10 */
proc report data=houses nowd headskip;
by bedrooms;
format bedrooms numf.;
column price;
run;
/**********************************************************************/
proc format;
value numf 1='ONE' 2='TWO' 3='THREE' 4='FOUR';
/* OUTPUT 11 */
proc report data=sasuser.houses nowd headskip;
column bedrooms;
define bedrooms / group format=numf8. order=internal;
run;
/**********************************************************************/
proc format;
value numf 1='ONE' 2='TWO' 3='THREE' 4='FOUR';
/* OUTPUT 12 */
proc freq data=sasuser.houses order=formatted;
tables bedrooms / nopercent;
format bedrooms numf.;
run;
/**********************************************************************/
/* OUTPUT 13a */
proc report data=sasuser.houses nowd headskip;
title1 "ORDER=FORMATTED";
title2 "(default)";
title4 "FORMAT=BEST9.";
title5 "(default)";
column baths;
define baths / group width=9;
/* OUTPUT 13b */
proc report data=sasuser.houses nowd headskip;
title1 "ORDER=FORMATTED";
title2 "(default)";
title4 "FORMAT=3.1";
title5 "(specified)";
column baths;
define baths / group width=9 format=3.1;
/* OUTPUT 13c */
proc report data=sasuser.houses nowd headskip;
title1 "ORDER =INTERNAL";
title2 "(specified)";
title4 "FORMAT=BEST9.";
title5 "(default)";
column baths;
define baths / group width=9 order=internal;
run;
/**********************************************************************/
/* OUTPUT 14 */
proc tabulate data=sasuser.houses order=data
format=3. noseps;
class style;
table style, n;
run;
/**********************************************************************/
/* OUTPUT 15 */
proc tabulate data=sasuser.houses order=data
format=3. noseps;
class style bedrooms;
table style*bedrooms, n;
run;
/**********************************************************************/
proc format;
value bedfmt 1='ONE' 2='TWO' 3='THREE' 4='FOUR';
/* OUTPUT 16a */
proc tabulate data=sasuser.houses
order=freq noseps format=3.;
title1 "PROC TABULATE";
title2 "Without Format";
class bedrooms;
table bedrooms, n;
/* OUTPUT 16b */
proc freq data=sasuser.houses order=freq;
title1 "PROC FREQ";
title2 "Without Format";
tables bedrooms / nocum nopercent;
/* OUTPUT 16c */
proc report data=sasuser.houses nowd headline;
title1 "PROC REPORT";
title2 "Without Format";
title3 "Without DESCENDING";
column bedrooms n;
define bedrooms / group order=freq;
/* OUTPUT 16d */
proc report data=sasuser.houses nowd headline;
title1 "PROC REPORT";
title2 "Without Format";
title3 "With DESCENDING";
column bedrooms n;
define bedrooms / group order=freq descending;
/* OUTPUT 16e */
proc tabulate data=sasuser.houses
order=freq noseps format=3.;
title1 "PROC TABULATE";
title2 "With Format";
class bedrooms;
table bedrooms, n;
format bedrooms bedfmt.;
/* OUTPUT 16f */
proc freq data=sasuser.houses order=freq;
title1 "PROC FREQ";
title2 "With Format";
tables bedrooms / nocum nopercent;
format bedrooms bedfmt.;
/* OUTPUT 16g */
proc report data=sasuser.houses nowd headline;
title1 "PROC REPORT";
title2 "With Format";
title3 "Without DESCENDING";
column bedrooms n;
define bedrooms / group order=freq format=bedfmt8.;
/* OUTPUT 16h */
proc report data=sasuser.houses nowd headline;
title1 "PROC REPORT";
title2 "With Format";
title3 "With DESCENDING";
column bedrooms n;
define bedrooms / group order=freq
format=bedfmt8. descending;
run;
/**********************************************************************/
proc tabulate data=sasuser.houses
order=freq format=3. noseps;
class baths;
table baths, n;
run;
/**********************************************************************/
proc tabulate data=sasuser.houses
order=freq format=3. noseps;
class baths bedrooms;
table bedrooms*baths, n;
run;
/**********************************************************************/