Hopefully I'm missing something obvious but at this point I'm stumped. Any help is appreciated.
This is in SAS 9.3/1M0 on Windows7/32bit.
I can't get the var in the line statement to print to the report. I added a string just to see if the line statement was working and the string prints just fine but not the var.
There is no error or warning in the log - the var just doesn't show on report.
I started with the var in question to the right of the 'compute before' var but changed order of the vars in the column statement
(based on documentation and a posting on SAS-L) so var referenced in compute statement is to the left of the 'break' var. It doesn't work in either position.
I've also tried different formats and a bunch of other things but no joy.
Thanks for looking.
-------------------------
First the dataset.
Adm Adm Adm Adm measure_ measure_value_
measure_name Total Res NonRes Pct measure order order
HS GPA 3.72 3.62 3.74 Means 1 2
HS GPA 8 2 6 2% 2.5-2.99 1 1
HS GPA 117 30 87 31% 3.0-3.59 1 1
HS GPA 166 23 143 45% 3.6-4.00 1 1
HS GPA 78 10 68 21% 4.01-high 1 1
HS GPA 3 . 3 1% Missing Data 1 1
HS Rank 78.2 74.6 79.2 Means 2 2
HS Rank 1 . 1 0% 0-29 2 1
HS Rank 13 3 10 3% 30-49 2 1
HS Rank 20 8 12 5% 50-59 2 1
HS Rank 74 19 55 20% 60-79 2 1
HS Rank 64 12 52 17% 80-80 2 1
HS Rank 72 11 61 19% 90-100 2 1
HS Rank 128 12 116 34% Missing Data 2 1
SAT Crt Thnk 558 566 558 Means 3 2
SAT Crt Thnk 3 . 3 1% 0-399 3 1
SAT Crt Thnk 38 3 35 10% 400-499 3 1
SAT Crt Thnk 99 6 93 27% 500-599 3 1
SAT Crt Thnk 55 2 53 15% 600-699 3 1
SAT Crt Thnk 8 2 6 2% 700-800 3 1
SAT Crt Thnk 169 52 117 45% Missing Data 3 1
SAT Math 551 524 553 Means 4 2
SAT Math 6 . 6 2% 0-399 4 1
SAT Math 43 7 36 12% 400-499 4 1
SAT Math 87 2 85 23% 500-599 4 1
SAT Math 59 3 56 16% 600-699 4 1
SAT Math 8 1 7 2% 700-800 4 1
SAT Math 169 52 117 45% Missing Data 4 1
ACT Comp 24.9 23.5 25.3 Means 5 2
ACT Comp 17 6 11 5% 15-18 5 1
ACT Comp 60 23 37 16% 19-22 5 1
ACT Comp 92 19 73 25% 23-26 5 1
ACT Comp 90 13 77 24% 27-36 5 1
ACT Comp 113 4 109 30% Missing Data 5 1
CCHE Index 117 113 118 Means 6 2
CCHE Index . . . . 0-89 6 1
CCHE Index 33 11 22 9% 090-100 6 1
CCHE Index 122 27 95 33% 101-114 6 1
CCHE Index 213 27 186 57% 115-160 6 1
CCHE Index 4 . 4 1% Missing Data 6 1
---------------------------------------
Now the code.
proc report data = test nowd headskip missing out=test ;
columns measure_name measure_order measure_value_order
measure ('Admitted Not Enrolled' AdmRes AdmNonRes AdmTotal AdmPct) ;
define measure_order / order noprint ;
define measure_value_order / order noprint ;
define measure_name / display noprint ;
define measure / display order = data '00'x ;
define AdmRes / display 'Res' right ;
define AdmNonRes / display 'Nonres' right ;
define AdmTotal / display 'Total' right ;
define AdmPct / display 'Percent' right ;
compute before measure_order ;
line @1 '??' @5 measure_name $varying14. ;
endcomp ;
run ;
------------------------
Finally, the output.
Admitted Not Enrolled
Res Nonres Total Percent
??
2.5-2.99 2 6 8 2%
3.0-3.59 30 87 117 31%
3.6-4.00 23 143 166 45%
4.01-high 10 68 78 21%
Missing Data . 3 3 1%
Means 3.62 3.74 3.72
??
0-29 . 1 1 0%
30-49 3 10 13 3%
50-59 8 12 20 5%
60-79 19 55 74 20%
80-80 12 52 64 17%
90-100 11 61 72 19%
Missing Data 12 116 128 34%
Means 74.6 79.2 78.2
??
0-399 . 3 3 1%
400-499 3 35 38 10%
500-599 6 93 99 27%
600-699 2 53 55 15%
700-800 2 6 8 2%
Missing Data 52 117 169 45%
Means 566 558 558
??
0-399 . 6 6 2%
400-499 7 36 43 12%
500-599 2 85 87 23%
600-699 3 56 59 16%
700-800 1 7 8 2%
Missing Data 52 117 169 45%
Means 524 553 551
??
15-18 6 11 17 5%
19-22 23 37 60 16%
23-26 19 73 92 25%
27-36 13 77 90 24%
Missing Data 4 109 113 30%
Means 23.5 25.3 24.9
??
0-89 . . . .
090-100 11 22 33 9%
101-114 27 95 122 33%
115-160 27 186 213 57%
Missing Data . 4 4 1%
Means 113 118 117
Hi,
well, you have some issues. Right now, I think the DISPLAY usage for MEASURE_NAME is the problem. You could try this DEFINE Statement for MEASURE_NAME:
define measure_name / order order=data;
then try it. Or just change your compute block to COMPUTE MEASURE_NAME, instead of MEASURE_ORDER. Since they are essentially breaking the same, either one would work. But either way, I think that MEASURE_NAME has to be an ORDER item.
cynthia
I think $varyingw. is strictly an informat
found SAS(R) 9.4 Formats and Informats: Reference but you can lookup for it in the format list it is not there. It does make some sense too. Depending on your ODS destination, you *should* be able to avoid the issue of white space padding by using a trim(measure_name).
I am not very familiar with proc report so I may be wrong about line statement supporting trim() like the put statement since there are a few features of put not supported by line
Vince
Hi,
well, you have some issues. Right now, I think the DISPLAY usage for MEASURE_NAME is the problem. You could try this DEFINE Statement for MEASURE_NAME:
define measure_name / order order=data;
then try it. Or just change your compute block to COMPUTE MEASURE_NAME, instead of MEASURE_ORDER. Since they are essentially breaking the same, either one would work. But either way, I think that MEASURE_NAME has to be an ORDER item.
cynthia
I posted this same reply on SAS-L. Just a small change to what you had.
Thanks to all for your suggestions//help.
Cynthia, I'll try your suggestions Monday and post results here.
You need to tell PROC REPORT that you want to use measure_name as an ORDER variable.
define measure_name / order order=data noprint ;
You probably do NOT want to overwrite your input data with the output data from the proc.
proc report data = test nowd headskip missing /* out=test */ ;
Apparently PROC REPORT does not generate an error message when you fail to provide the $VARYING. format with the required length variable. If you tried that in a data step you would get:
ERROR: Variable name containing length expected after $VARYING.
But you should probably either change the program to use $14. or calculate an actual length.
compute before measure_order ;
length=length(measure_name);
line @1 '??' @5 measure_name $varying14. length ;
endcomp ;
All that was really needed was to change the define statement for the var to be printed in the line statement to an order type instead of a display.
Tom, you are right about input and output to text dataset. I just created the 'test' dataset for this submission (it's a subset of larger dataset) and forgot to eliminate the output 'test' dataset that I had used in trying to troubleshoot the problem.
Many thanks to all.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.