08-18-2015 03:33 PM
I wanted to assign the formatted age group value created using proc format , as a variable for the corresponding ages.How can i get that?Pls help
>= 65 Years
08-18-2015 03:38 PM
Use the PUT Function - but note that you'll lost your ability to sort properly unless you keep both variables in your data set.
AGE_GROUP = PUT(age, age_group_format.);
08-18-2015 03:40 PM
Assuming your SAS format is called Age_Group, use the PUT function to assign the age group format values to a variable: Age_Group_Var = put(age, Age_Group.);
08-18-2015 05:35 PM
You didn't provide any raw data, so I create a dummy data set that has an age variable (random ages) and a group variable with values of 100, 200 and 300.
do group= 100, 200, 300;
do i= 1 to group;
age = round( 100*ranuni(345),1);
/* a custom format. Your example says that you want a multilabel since values >75 are also >65. Only a few procedures will actually honor multiple label type variables
proc format library=work;
value myage (multilabel)
low - < 65 = '< 65 years'
65 - high = '>= 65 years'
75 - high = '>= 75 years'
/* This is one of the procedures that will use the multilabel format indicated by MLF on the class statement
this come close to demonstrating the output you showed. We can modify the format to round the row percentage display. If you really need () then there is a bit more work but that is for a separate thread after getting the basics*/
proc tabulate data=have;
class age / mlf;
format age myage.;
tables age, group=''*(n='' rowpctn='');