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

Hello,

 

Given data of the following format, how could one collapse the transactional records to a single row (customer) and preserve the order of the transaction type?  I.e. the result using the code below should be a single row for customer A with transaction history of 'offline-online-offline':

 

data sample;
   input cust $ type $;
   datalines;
A offline
A offline
A offline
A offline
A offline
A online
A online
A online
A online
A online
A online
A offline
A offline
A offline
A offline
A offline
;
run;

Assume the data is already sorted by customer and in ascending order by a timestamp variable not shown here.  Customers could have a single interaction type or up to 9 different types, with the average number of customer interactions is approx. 50 per customer.  Any assistance is much appreciated.  Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

I think this may get you started:

Data want;
   set sample;
   length longtext $500; /*this number has to be long enough to hold thelongest expected string*/
   retain longtext;
   by cust notsorted type;
   if first.cust then call missing(longtext);
   if first.type then longtext=catx('-',longtext,type);
   if last.cust;
run;

Any not named variables would have the values from the last record for the cust value.

 

View solution in original post

2 REPLIES 2
ballardw
Super User

I think this may get you started:

Data want;
   set sample;
   length longtext $500; /*this number has to be long enough to hold thelongest expected string*/
   retain longtext;
   by cust notsorted type;
   if first.cust then call missing(longtext);
   if first.type then longtext=catx('-',longtext,type);
   if last.cust;
run;

Any not named variables would have the values from the last record for the cust value.

 

P5C768
Obsidian | Level 7

Another great solution from @ballardw!  Thank you!

 

 

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
  • 1133 views
  • 2 likes
  • 2 in conversation