BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Misted5
Fluorite | Level 6

Hi,

I'm new to using EG and I'm amending a flow built by someone who has since left. It's EG 4.3 (so a bit elderly) and the input dataset structure has changed since the flow was originally built.. I'm trying to combine address data to fit and it seems simple enough but I'm struggling. Any help that I can try would be gratefully received please! 

 

Data example:

Field 1                                                                                           Field 2

14 Anywhere Street, Town, County                                              LR12 6HG

 

I need to add the postcode into the same field as the first part of the address but with a comma after the county and before the postcode. The output should look like:

Field 1

14 Anywhere Street, Town, County, LR12 6HG

 

The output will be feeding into a subsequent code node so has to have the correct input structure or it fails. I don't know how to SAS code to try and amend the code node so I'm stuck! I've found heaps of guidance for removing commas but not for adding one in.

Many thanks Smiley Frustrated

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

SAS now has a lot of interesting CAT....() functions.

CATX() is useful in this case.

field1=catx(',',field1,field2);

View solution in original post

5 REPLIES 5
Kurt_Bremser
Super User

Just concatenate, but take care of trailing blanks:

field1 = trim(field1) !! ', ' !! field2;

Also note that field1 needs to be defined with a length sufficent to hold the concatenated values, so you might need to create a new variable, as you can't change the length of a variable on-the-fly.

Misted5
Fluorite | Level 6

Ah thank you very much, I haven't used trim before - I'll try this when I'm back in work tomorrow Smiley Happy

Tom
Super User Tom
Super User

SAS now has a lot of interesting CAT....() functions.

CATX() is useful in this case.

field1=catx(',',field1,field2);
Misted5
Fluorite | Level 6

Thank you all for your quick help, it was much appreciated. I hadn't thought about the length of the field, and when I checked it was auto-set to 200 characters so plenty of room but by luck rather than judgement.

Thanks again 

Astounding
PROC Star

Regardless of the approach you take, one of the issues to consider is the lengths of the variables involved.  Make sure FIELD1 is long enough to hold the combined values (otherwise it is possible to lose characters from the end of the combined string).  If you need to adjust the length of FIELD1, do it before the SET statement:

 

data want;

length field1 $ 100;

set have;

*** whatever approach you choose;

run;

sas-innovate-2024.png

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.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 8679 views
  • 3 likes
  • 4 in conversation