DATA Step, Macro, Functions and more

Assign the format of a variable to another variable

Accepted Solution Solved
Reply
Contributor
Posts: 24
Accepted Solution

Assign the format of a variable to another variable

[ Edited ]

Hello,

 

I have set up a format for a particular variable, along these lines:

 

proc format;
          value cost_range
          .                  =         "$0-$5,000"
          0-5000             =         "$0-$5,000"
          5001-10000         =         "$5,001-$10,000";
run;

 

The underlying variable above is obviously numeric; however, I want to be able to assign the resulting format as a character string to another variable.

 

For example, I want cost_range_char to actually store $0-$5000 as a character string.

 

Any advice will be appreciated and liked promptly.

 

Kind regards,

Mark


Accepted Solutions
Solution
2 weeks ago
Super User
Posts: 9,611

Re: Assign the format of a variable to another variable

Use the put() function with your format.

cost_range_char = put(cost,cost_range.);
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code

View solution in original post


All Replies
Solution
2 weeks ago
Super User
Posts: 9,611

Re: Assign the format of a variable to another variable

Use the put() function with your format.

cost_range_char = put(cost,cost_range.);
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Occasional Contributor
Posts: 14

Re: Assign the format of a variable to another variable

 

*I am not sure want you want to get it but it may surely help;


data have;
/* a b and c is numeric */ 
a=0;
b=.;
c=5000;

run;

proc format ;

value new_format 

.= "MISSING"
0-4999="LESS then 5000"
5000 ="5000 >"
;
run;

data want;
set have;
new_a=put(a,new_format.);
new_b=put(b,new_format.);
new_C=put(c,new_format.);

drop a b c;

rename new_a=a new_b=b new_c=c; run; * note: if you have data already in char then use INPUT function and use $ sign in proc formate such as $new_format;
PS
☑ This topic is solved.

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

Discussion stats
  • 2 replies
  • 116 views
  • 2 likes
  • 3 in conversation