02-14-2017 10:44 AM
Is it possible to compute/create a character variable in proc report? What I would like to do is take 2 numbers, a create a new character variable that puts them in a from that looks something like this: (18.2, 21.1). However, it seems that maybe compute blocks can only create numeric variables. Is there a way around this?
proc surveyfreq data=d1;
tables walk / row cl nowt nostd;
ods output oneway=out_table;
proc report data=out_table;
columns table percent lowerCL UpperCL CL;
define table / display;
define percent / display;
define lowerCL / display;
define UpperCL / display;
define CL / computed ;
compute CL; CL = cats("(", LowerCL, ",", UpperCL, ")"); ENDCOMP;
NOTE: Character values have been converted to numeric values at the places given by:
NOTE: Invalid numeric data, '(78.900921457,81.793697714)' , at line 1 column 7.
NOTE: Invalid numeric data, '(18.206302286,21.099078543)' , at line 1 column 7.
NOTE: Invalid numeric data, '(_,_)' , at line 1 column 7.
NOTE: There were 3 observations read from the data set WORK.out_table.
NOTE: At least one W.D format was too small for the number to be printed. The decimal may be
shifted by the "BEST" format.
02-14-2017 11:56 AM
02-14-2017 10:56 AM
Since you are not actually calculating the values for the limits in the proc report I would think the easier way would be in an intermediate datastep;
data out_table; set out_table; CL = cats("(", LowerCL, ",", UpperCL, ")"); run;
before the Proc report.
I would probably use a Put(lowercl,best6.) or similar in the cats function unless you really think the additional digits are helpful.
I know of a method that involves custom format to supply leading (, leading comma with trailing ) , style justifications of right and left for adjacent columns, reducing the cellpadding and border widths to 0 to get that appearance in calculated columns
02-14-2017 11:56 AM
Need further help from the community? Please ask a new question.