SAS Enterprise Guide

Desktop productivity for business analysts and programmers
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-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

Creating Custom Steps in SAS Studio

Check out this tutorial series to learn how to build your own steps in SAS Studio.

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
  • 5 replies
  • 10777 views
  • 3 likes
  • 4 in conversation