SAS : Convert character to numeric without creating another variable?
I want to convert `x` to numeric.
DATA test;
input x $1.;
cards;
1
2
0
;
run;
I tried different ways :
- With `*1` :
/* trial1 */
DATA test1;
SET test;
x = x*1;
run;
The log prints the following note :
NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
2470:3
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
2470:4
And the format doesn't change.
- With `input()` :
/* trial2 */
DATA test2;
SET test;
x = input(x,BEST1.);
run;`
The log prints the following note :
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
2396:3
And the format doesn't change.
- With `informat` :
/* trial3 */
DATA test3;
SET test;
informat x BEST1.;
run;
The log prints the following error :
ERROR 48-59: The informat $BEST was not found or could not be loaded.
Which is explained [here](http://support.sas.com/kb/23/083.html) and [here](http://support.sas.com/resources/papers/proceedings11/262-2011.pdf) : the compiler detects different types for variable and format, assumes it's a mistake, add the presumed-missing `$` and therefore doesn't find the format.
All these trials would work if I created a second variable like for example :
DATA test4;
SET test (rename=(x=x2));
x = x2*1;
drop x2;
run;
But I'm trying to clean up my code and I wonder if there is a way to do such a conversion without doing so ?
"If you want your resulting data set to use the original variable name as a different type, you need to drop the original variable and rename the new variable to the old name:"