So this code is working perfectly. However, in my actual dataset I am using a WEIGHT variable and I am suspecting because of it I am not getting the desired output from the PROC REPORT step.
I have created a new data with a dummy WEIGHT variable 'dz' (which is actually not weighted). DATA HAVE; input year dz $8. area; cards; 2000 1 08 2000 1 06 2000 2 06 2001 2 08 2001 2 06 2001 3 06 2002 3 08 2002 3 06 2002 1 06 ; run;
I am using similar code in my original dataset proc format; picture count (round) 0-4 = ' <5' (NOEDIT); picture pcnt (round) 0 = ' - ' other = '009.9%';
proc tabulate data=have out=want (where=(year ne 2000)) ; class year area; tables (year=' ' all='Total'), ((area=' ')*(dz="No."*sum*f=count. dz='%'*rowpctsum*f=pcnt.) (all='Total')*(dz="No."*sum*f=count. dz='%'*rowpctsum*f=pcnt.)) /box=year; var dz; run;
This code doesn't work for this data as 'dz' is actually not weighted. However, I am sharing it to discuss the issue with my original dataset.
Now lets assume the above proc step actually works then I do the below from your code
data want2; set want; if year = . then _year = "Total"; else _year = put(year,z4.); if area = . then _area = "Total"; else _area = put(area,2.); run;
When I print the 'want2' data I would get somethin like below
Based on the above columns I would lastly do the proc report step
proc report data=want2; column _year _area,(dz_wt_Sum dz_wt_PctSum_10); define _year / "Year" group; define dz_wt_Sum / analysis sum; define dz_wt_PctSum_10 / "PctN" analysis sum format=6.2; define _area / "" across; run;
All of the steps until PROC REPORT work fine but after the PROC REPORT I get a warning that says "dz_wt_PctSum_10" and "dz_wt_Sum" are not in the report definition. And of course I don't get the desired report. Can you let me know where I am going wrong.
I know it is hard to understand the issue from my example code which actually doesn't work. But this has worked in the original dataset until the PROC REPORT step.
Thank you!
... View more