data have;
input abc $;
cards;
1.0 MG
0.25#
*1
2.5 UG
run;
data want;
set have;
a1 = compress(abc,'#*','s','a');
run;
I need only the numeric value. while using the compress func an ERROR occurred:
The COMPRESS function call has too many arguments.
Please suggest me any methods to solve.
READ THE DOCUMENTATION!
From the "modifier" part:
k or K keeps the characters in the list instead of removing them.
So you want to keep digits and dots, just use a list of all digits and the dot as second parameter, and k as the third.
data have;
input abc $;
cards;
1.0 MG
0.25#
*1
2.5 UG
;
run;
data want;
set have;
a1 = compress(abc,'0123456789.','k');
run;
Or use a combination of parameters:
data want;
set have;
a1 = compress(abc,'.','kd');
run;
The 2nd argument of compress is a string contains the delimiters or characters to ignore.
There is a 3rd argument with special means. In your case "kd" means keep digits only:
a1 = compress(abc, , 'kd');
You better look at the documentation.
If i use 'kd' in compress then it delete '.' punctuation in (1.5, 2.5, 1.0) so the value should like (15 , 25, 10)
I need value in decimal as same as in my dataset.
READ THE DOCUMENTATION!
From the "modifier" part:
k or K keeps the characters in the list instead of removing them.
So you want to keep digits and dots, just use a list of all digits and the dot as second parameter, and k as the third.
data have;
input abc $;
cards;
1.0 MG
0.25#
*1
2.5 UG
;
run;
data want;
set have;
a1 = compress(abc,'0123456789.','k');
run;
Or use a combination of parameters:
data want;
set have;
a1 = compress(abc,'.','kd');
run;
Thank u so much! @Kurt_Bremser @Shmuel
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.