Hi Folks,
My given data set
data mixed_data;
length mixed_variable $20.;
input mixed_variable $20.;
datalines;
aB#5dH0p2Lq8R!xJ7sE9
3kFy@6u1oPwQvZr4Xb2
s9TgY0o2I!qLw5mH8xN7
dC4pL!aB9eR2o7Xn1yH6
6fWvGm9@jP3tNqLr1iH2
bS5lE7dR0oA1!xQ8zC3
Kp2Jr!L6yFw7XsNv9H0e
4uO9rH#tWq1E7sY2cL6
xZ3yF2!iQ8vS0l1Hr7nG
5pA1!mQ9o2W8rHl3vC6
;
run;
proc print data=mixed_data;
run;
i want keep only character(alphabets) and numbers only and remove other characters and including spaces
I used function Compress(mixed_variable, ,sakkd);
however s - to remove spaces
ak - to keep alphabets
kd - to keep numbers
are there any other way?
I am not sure of sakkd function my output if fine but i want make sure its does a right job I want other ways and validation as well
I would think the final argument to COMPRESS would be 'adk'
New_Var=compress(mixed_variable, '', 'p');
To remove any punctuation or special characters
If space are important then include some spaces in the test data.
data mixed_data;
input mixed_variable $20.;
datalines;
aB#5dH0p2Lq8R!xJ7sE9
3kFy @6u1oPwQvZr4Xb2
s9TgY0o2I!qLw5mH8xN7
dC4pL!aB9eR2o7Xn1yH6
6fWvGm9@jP3tNqLr1iH2
bS5lE 7dR0oA1!xQ8zC3
Kp2Jr!L6yFw7XsNv9H0e
4uO9rH# tWq1E7sY2cL6
xZ3yF2!iQ8vS0l1Hr7nG
5pA1!m Hl3 v C6
;
It sounds like you are saying you want to eliminate everything except digits letters and spaces.
data want;
set mixed_data;
want = compress(mixed_variable,' ','kad');
run;
Which will generate:
Obs mixed_variable want 1 aB#5dH0p2Lq8R!xJ7sE9 aB5dH0p2Lq8RxJ7sE9 2 3kFy @6u1oPwQvZr4Xb2 3kFy 6u1oPwQvZr4Xb2 3 s9TgY0o2I!qLw5mH8xN7 s9TgY0o2IqLw5mH8xN7 4 dC4pL!aB9eR2o7Xn1yH6 dC4pLaB9eR2o7Xn1yH6 5 6fWvGm9@jP3tNqLr1iH2 6fWvGm9jP3tNqLr1iH2 6 bS5lE 7dR0oA1!xQ8zC3 bS5lE 7dR0oA1xQ8zC3 7 Kp2Jr!L6yFw7XsNv9H0e Kp2JrL6yFw7XsNv9H0e 8 4uO9rH# tWq1E7sY2cL6 4uO9rH tWq1E7sY2cL6 9 xZ3yF2!iQ8vS0l1Hr7nG xZ3yF2iQ8vS0l1Hr7nG 10 5pA1!m Hl3 v C6 5pA1m Hl3 v C6
If you also want to eliminate spaces then do not put anything at all for the second argument.
want = compress(mixed_variable,,'kad');
Or put some character you DO want to keep in the second argument.
data want;
set mixed_data;
want = compress(mixed_variable,'A','kad');
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.