BookmarkSubscribeRSS Feed
SASPhile
Quartz | Level 8
Hi,
Until april the vendor gave the filed name as md_city and since may it was changed to phy_city. Now my dataset has values for these two fields. I would want to have the data from these two fields into a single field phys_city.
How do I do it without any dataloss?
2 REPLIES 2
deleted_user
Not applicable
I'm not sure if PHYS_CITY (added 'S') is a typo, but if not, and assuming that this is a character variable, you could do something like:

data new;

set old;

if md_city ne '' and phy_city = '' then phys_city = md_city;

else if md_city = '' and phy_city ne '' then phys_city = phy_city;

else do;

phys_city = '';

put 'WARNING: Both city variables are missing for ' _n_=;

end;

run;
DanielSantos
Barite | Level 11
Yet another way of doing the same.

Assuming that none or only one of the columns has values for each row.

data new;
set old;
length PHYS_CITY $200;
PHYS_CITY=coalescec(MD_CITY,PHY_CITY);
run;

Check the online documentation for the COALESCEC function:
http://support.sas.com/documentation/cdl/en/lrdict/61724/HTML/default/a002518268.htm

Don't forget to allocate PHYS_CITY with enough size to hold values.

Cheers from Portugal.

Daniel Santos @ www.cgd.pt.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1082 views
  • 0 likes
  • 3 in conversation