🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Obsidian | Level 7

## Decreasing decimal places in proc surveyfreq output

The sas code below produces 4 decimal places output by default:

proc surveyfreq data=data6;

table AH_Zone*CHAS_NUTRN_1*CHAS_SEX/ CL chisq CV;

weight H_weight;

run;

Can someone help me reduce the output to 1 decimal place please!!

Thanks

Lordy

1 ACCEPTED SOLUTION

Accepted Solutions
Opal | Level 21

## Re: Decreasing decimal places in proc surveyfreq output

You can get hold of output tables data with ODS and then output them in whatever format you want with a datastep, proc SQL, proc Tabulate, proc Print or proc Report.  Use the statement ODS trace on;  before calling surveyfreq to see the names of output tables in the log. Then use ODS output wantedTable=myTable; to get a copy of the table.

PG
6 REPLIES 6
Opal | Level 21

## Re: Decreasing decimal places in proc surveyfreq output

You can get hold of output tables data with ODS and then output them in whatever format you want with a datastep, proc SQL, proc Tabulate, proc Print or proc Report.  Use the statement ODS trace on;  before calling surveyfreq to see the names of output tables in the log. Then use ODS output wantedTable=myTable; to get a copy of the table.

PG
Obsidian | Level 7

## Re: Decreasing decimal places in proc surveyfreq output

Awesome it worked!!. However, it converted the missing values into 88 & 99 and I am still trying to figure out why?
Thanks alot

Opal | Level 21

## Re: Decreasing decimal places in proc surveyfreq output

"it converted the missing values into 88 & 99" - That is unusual. Please post as a new question if the problem persists.

PG
Obsidian | Level 7

## Re: Decreasing decimal places in proc surveyfreq output

This is the output I run to decrease to 1 decimal place

ods trace on;

proc surveyfreq data=data6;

table AH_Zone*new_CHAS_NUTRN_1*CHAS_SEX/ CL chisq CV;

weight AH_weight;

ods output CrossTabs=ZoneTable;

run;

proc print data=ZoneTable;

format percent 8.1

stderr 8.1

CL 8.1

CV 8.1;

run;

Super User

## Re: Decreasing decimal places in proc surveyfreq output

Easiest is likely to be to pipe the output table to datasets and then you have all of the control of your favorite reporting procedures to modify formats, labels and appearance.

Add a statement similar to this for each table of output you want to reformat in the procedure call:

ods output <proc table name> = datasetnameyouwant;

The various table names are available in the online documentation for surveyfreq but you are likely looking for ChiSq

The other approach would be to modify the Surveyfreq table templates.

Obsidian | Level 7

## Re: Decreasing decimal places in proc surveyfreq output

The ODS table name is Cross Tabs because it is an n-way table. I appreciate your help.

Discussion stats
• 6 replies
• 2856 views
• 2 likes
• 3 in conversation