Hi,
I have a question (probably an easy one).
How can I add text to a variable? It looks like:
ID
27693057
20377519
31679420
02310259
02148619
Can I have them to look like these:
ID
DM-27693057
DM-20377519
DM-31679420
DM-02310259
DM-02148619
A solution could also be to remove the 'DM-' part as I want to join two datasets. The numbers in each ID is identical, but I cant join them right now because of the 'DM-' part. The first variables (only numbers) is in format BEST12. while the variables with DM- is in the format $CHAR12.
Thank you!
/MM
This is pretty easy to do. However, your actual problem seems to be another one. Can you provide a description of the 'join' problem? I think we can solve your actual problem as well 🙂
Hello,
data A_charID;
set A(rename=(ID=Old_ID));
length ID $ 12;
ID=cats('DM-', put(Old_ID,z8.));
run;
data B_numID;
set B(rename=(ID=Old_ID));
ID=input(substr(Old_ID,4), best12.);
run;
Join on a.id = input(substr(b.id,4),12.)
perhaps if meant join in Proc SQL, A would the set with the ID numeric and B the other set with the character ID.
or build the string value with something like Cats('DM-',put(a.id,12. -L) ) = b.id
All of the above are viable. Many ways to skin something.
data have_A;
input ID $8.;
datalines;
27693057
20377519
31679420
02310259
02148619
;
run;
data have_B;
input ID $11.;
datalines;
DM-27693057
DM-20377519
DM-31679420
DM-02310259
DM-02148619
;
run;
data have_B_xformd/view=have_B_xformd;
set have_B;
ID_stub=substr(ID,4,8);
run;
proc sql;
create table join_demo as
select a.ID as ID_a,
b.ID as ID_b
from have_a as a
join
have_B_xformd as b
ON a.ID=b.ID_stub;
quit;
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.