Help using Base SAS procedures

Decreasing decimal places in proc surveyfreq output

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 19
Accepted Solution

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


Accepted Solutions
Solution
‎02-02-2016 02:42 PM
Respected Advisor
Posts: 4,646

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

View solution in original post


All Replies
Solution
‎02-02-2016 02:42 PM
Respected Advisor
Posts: 4,646

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
Occasional Contributor
Posts: 19

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

Respected Advisor
Posts: 4,646

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
Occasional Contributor
Posts: 19

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
Posts: 10,497

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.

Occasional Contributor
Posts: 19

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.

 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

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