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!
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.
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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.