Total54100.000 I am only interested in
I am only interested in the total statistics in the output below. Is there something I should include in the table statement in proc surveyfreq procedure to give me only the totals? Thanks
Table of Edu_level by SEX | |||||||
Controlling for AH_LOCAL_CODE=Z2 | |||||||
AHS_Edu_level | CHAS_SEX | Frequency | Percent | Std Err of Percent | 95% Confidence Limits for Percent | CV for Percent | |
1 | 1 | 1 | 2.6267 | 2.6343 | 0.0000 | 7.7907 | 1.0029 |
| 2 | 11 | 31.8726 | 10.4146 | 11.4571 | 52.2882 | 0.3268 |
| Total | 12 | 34.4993 | 10.6584 | 13.6058 | 55.3929 | 0.3089 |
2 | 1 | 3 | 14.2768 | 7.9889 | 0.0000 | 29.9374 | 0.5596 |
| 2 | 8 | 31.6395 | 12.4148 | 7.3028 | 55.9762 | 0.3924 |
| Total | 11 | 45.9163 | 12.2465 | 21.9096 | 69.9231 | 0.2667 |
3 | 1 | 1 | 2.6267 | 2.6343 | 0.0000 | 7.7907 | 1.0029 |
| 2 | 3 | 16.1912 | 9.0225 | 0.0000 | 33.8780 | 0.5572 |
| Total | 4 | 18.8179 | 9.2694 | 0.6472 | 36.9887 | 0.4926 |
4 | 1 | 0 | . | . | . | . | . |
| 2 | 1 | 0.7664 | 0.7827 | 0.0000 | 2.3006 | 1.0213 |
| Total | 1 | 0.7664 | 0.7827 | 0.0000 | 2.3006 | 1.0213 |
Total | 1 | 5 | 19.5303 | 8.6562 | 2.5617 | 36.4989 | 0.4432 |
| 2 | 23 | 80.4697 | 8.6562 | 63.5011 | 97.4383 | 0.1076 |
| Total | 28 | 100.000 |
|
|
|
proc surveyfreq data=sashelp.cars;
table type*origin*drivetrain/ CL chisq CV nowt;
weight mpg_city;
ods output CrossTabs=PTable;
run;
proc print data=PTable;
where F_Origin="Total";
run;
Try this cde, which uses the sashelp.cars data set. You should see "Total" under the F_Origin column.
What version of SAS are you running? Submit this statement and send the log:
%put SYSVLONG = &SYSVLONG;
You can use ODS OUPUT to write the table to a data set and then use PROC PRINT with a WHERE clause to display only the rows you want.
After you write the table to a data set, look at the variables. In your case, there will be a variable named F_AHS_Edu_level that contains the value "Total". The PROC PRINT statement will look something like this:
proc print data=CrossTab;
where F_AHS_Edu_level="Total";
var F: Frequency Percent StdErr <other vars here>;
run;
Thank you Rick. I run it but it is still not given only the total. Below is the output the code produced. They are the same if you compare it to the previous one i posted. Totals are displayed at every third row.
Obs | Frequency | Percent | StdErr | LowerCL | UpperCL | CV |
1 | 7 | 24.9 | 9.7 | 5.8 | 44.0 | 0.3908 |
2 | 15 | 16.7 | 4.8 | 7.4 | 26.1 | 0.2836 |
3 | 22 | 41.7 | 9.3 | 23.5 | 59.9 | 0.2227 |
4 | 10 | 29.8 | 8.7 | 12.7 | 46.8 | 0.2922 |
5 | 11 | 15.6 | 5.5 | 4.8 | 26.3 | 0.3521 |
6 | 21 | 45.3 | 9.1 | 27.5 | 63.1 | 0.2004 |
7 | 1 | 3.0 | 3.0 | 0.0 | 8.9 | 0.9864 |
8 | 5 | 4.6 | 2.3 | 0.1 | 9.2 | 0.4965 |
9 | 6 | 7.7 | 3.8 | 0.3 | 15.0 | 0.4884 |
10 | 1 | 2.4 | 2.4 | 0.0 | 7.1 | 0.9928 |
11 | 4 | 2.9 | 1.8 | 0.0 | 6.4 | 0.6080 |
12 | 5 | 5.3 | 3.0 | 0.0 | 11.1 | 0.5580 |
wrong output!!
I will post the right one in abit.
Original output:
Table of Edu_level by SEX | |||||||
Controlling for AH_LOCAL_CODE=Z1 | |||||||
AHS_Edu_level | CHAS_SEX | Frequency | Percent | Std Err of Percent | 95% Confidence Limits for Percent | CV for Percent | |
1 | 1 | 7 | 24.9168 | 9.7378 | 5.8280 | 44.0057 | 0.3908 |
| 2 | 15 | 16.7494 | 4.7506 | 7.4368 | 26.0619 | 0.2836 |
| Total | 22 | 41.6662 | 9.2808 | 23.4732 | 59.8592 | 0.2227 |
2 | 1 | 10 | 29.7553 | 8.6937 | 12.7132 | 46.7974 | 0.2922 |
| 2 | 11 | 15.5799 | 5.4864 | 4.8251 | 26.3348 | 0.3521 |
| Total | 21 | 45.3352 | 9.0834 | 27.5292 | 63.1413 | 0.2004 |
3 | 1 | 1 | 3.0356 | 2.9943 | 0.0000 | 8.9054 | 0.9864 |
| 2 | 5 | 4.6445 | 2.3062 | 0.1237 | 9.1654 | 0.4965 |
| Total | 6 | 7.6802 | 3.7506 | 0.3279 | 15.0325 | 0.4884 |
4 | 1 | 1 | 2.3974 | 2.3803 | 0.0000 | 7.0634 | 0.9928 |
| 2 | 4 | 2.9210 | 1.7758 | 0.0000 | 6.4021 | 0.6080 |
| Total | 5 | 5.3184 | 2.9677 | 0.0000 | 11.1360 | 0.5580 |
Total | 1 | 19 | 60.1052 | 8.0924 | 44.2418 | 75.9686 | 0.1346 |
| 2 | 35 | 39.8948 | 8.0924 | 24.0314 | 55.7582 | 0.2028 |
| Total | 54 | 100.000 |
|
|
|
|
Modified output:
proc print data=PTable;
where Edu_level;
var frequency percent stderr lowerCL upperCL CV;
format percent 8.1
stderr 8.1
LowerCL 8.1
UpperCl 8.1;
run;
Obs | Frequency | Percent | StdErr | LowerCL | UpperCL | CV |
1 | 7 | 24.9 | 9.7 | 5.8 | 44.0 | 0.3908 |
2 | 15 | 16.7 | 4.8 | 7.4 | 26.1 | 0.2836 |
3 | 22 | 41.7 | 9.3 | 23.5 | 59.9 | 0.2227 |
4 | 10 | 29.8 | 8.7 | 12.7 | 46.8 | 0.2922 |
5 | 11 | 15.6 | 5.5 | 4.8 | 26.3 | 0.3521 |
6 | 21 | 45.3 | 9.1 | 27.5 | 63.1 | 0.2004 |
7 | 1 | 3.0 | 3.0 | 0.0 | 8.9 | 0.9864 |
8 | 5 | 4.6 | 2.3 | 0.1 | 9.2 | 0.4965 |
9 | 6 | 7.7 | 3.8 | 0.3 | 15.0 | 0.4884 |
10 | 1 | 2.4 | 2.4 | 0.0 | 7.1 | 0.9928 |
11 | 4 | 2.9 | 1.8 | 0.0 | 6.4 | 0.6080 |
12 | 5 | 5.3 | 3.0 | 0.0 | 11.1 | 0.5580 |
It is still showing totals on the third rows of the second table. Is there another way I get only the totals
Sorry about that. This is the code I used
ods trace on;
proc surveyfreq data=data6;
table AH_LOCAL_CODE*Edu_level*SEX/ CL chisq CV nowt;
weight AH_weight;
ods output CrossTabs=PTable;
run;
proc print data=PTable;
where F_Edu_level="Total";
var frequency percent stderr lowerCL upperCL CV;
format percent 8.1
stderr 8.1
LowerCL 8.1
UpperCl 8.1;
run;
Post the output from proc print including all the variables please.
Your most likely not applying the filter correctly, ie your where statement.
proc surveyfreq data=sashelp.cars;
table type*origin*drivetrain/ CL chisq CV nowt;
weight mpg_city;
ods output CrossTabs=PTable;
run;
proc print data=PTable;
where F_Origin="Total";
run;
Try this cde, which uses the sashelp.cars data set. You should see "Total" under the F_Origin column.
What version of SAS are you running? Submit this statement and send the log:
%put SYSVLONG = &SYSVLONG;
Rick: It worked when i used the sas help dataset.
However, it failed to produce the same output for my data. I am using SAS 9.4
Below is the log infor
Output Added:
-------------
Name: CrossTabs
Label: CrossTabulation Table
Template: Stat.SurveyFreq.CrossTabFreqs
Path: Surveyfreq.Table132of1.CrossTabs
-------------
NOTE: The data set WORK.PTABLE has 1056 observations and 12 variables.
NOTE: PROCEDURE SURVEYFREQ used (Total process time):
real time 1.74 seconds
cpu time 0.81 seconds
1939 proc print data=PTable;
1940 where F_AHS_Edu_level="Total";
1941 run;
NOTE: No observations were selected from data set WORK.PTABLE.
NOTE: There were 0 observations read from the data set WORK.PTABLE.
WHERE F_AHS_Edu_level='Total';
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.02 seconds
cpu time 0.01 seconds
I am thinking it has something to do with SAS 9.4
Thanks very much Rick. You are awesome!!
Run the following procedure and post the results.
proc freq data=PTable;
tables _CHAR_;
run;
Hi Rick, the output is shown below
proc surveyfreq data=data6; table AH_LOCAL_CODE*AHS_Edu_level*CHAS_SEX/ CL chisq CV nowt; weight AH_weight; ods output CrossTabs=PTable; run; proc freq data=PTable; tables _CHAR_; run;
AHS_Edu_level | ||||
F_AHS_Edu_level | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
1 | 396 | 20.00 | 396 | 20.00 |
2 | 396 | 20.00 | 792 | 40.00 |
3 | 396 | 20.00 | 1188 | 60.00 |
4 | 396 | 20.00 | 1584 | 80.00 |
Total | 396 | 20.00 | 1980 | 100.00 |
CHAS_SEX | ||||
F_CHAS_SEX | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
1 | 660 | 33.33 | 660 | 33.33 |
2 | 660 | 33.33 | 1320 | 66.67 |
Total | 660 | 33.33 | 1980 | 100.00
|
_SkipLine | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
- | 528 | 44.44 | 528 | 44.44 |
1 | 660 | 55.56 | 1188 | 100.00 |
Frequency Missing = 792 |
Rick: It does not produce the proc print for my data. I will past the log message below too.
Thanks!
proc surveyfreq data=data6;
table AH_LOCAL_CODE*AHS_Edu_level*CHAS_SEX/ CL chisq CV nowt;
weight AH_weight;
ods output CrossTabs=PTable;
run;
proc print data=PTable;
where F_AHS_Edu_level="Total";
run;
Output Added:
-------------
Name: CrossTabs
Label: CrossTabulation Table
Template: Stat.SurveyFreq.CrossTabFreqs
Path: Surveyfreq.Table132of1.CrossTabs
-------------
NOTE: The data set WORK.PTABLE has 1980 observations and 13 variables.
NOTE: PROCEDURE SURVEYFREQ used (Total process time):
real time 1.17 seconds
cpu time 1.20 seconds
1136
1137 proc print data=PTable;
1138 where F_AHS_Edu_level="Total";
1139 run;
NOTE: No observations were selected from data set WORK.PTABLE.
NOTE: There were 0 observations read from the data set WORK.PTABLE.
WHERE F_AHS_Edu_level='Total';
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.