Suppose that I had a data set that contained a list of names that contained additional columns that group names based on name type (first, last, or middle) and length (short or long):
| ID | NameType | Length | Name |
| 1 | First | Short | Jon |
| 2 | First | Long | Alexander |
| 3 | Middle | Short | Todd |
| 4 | Middle | Long | William |
| 5 | Last | Short | Smith |
| 6 | Last | Long | Stephanopoulos |
How can I create all unique combinations of names from each of the groups by selecting only 1 first name that is either short or long, 1 middle name that is either short or long, and 1 last name that is either short or long? For example:
| Jon | Todd | Smith |
| Jon | William | Smith |
| Jon | Todd | Stephanopoulos |
| Jon | William | Stephanopoulos |
| Alexander | Todd | Smith |
| Alexander | William | Smith |
| Alexander | Todd | Stephanopoulos |
| Alexander | William | Stephanopoulos |
I thought that proc plan would work but I can't figure out how to do it. Any help would be greatly appreciated.
Here's one way:
data have;
informat id best4. NameType $6. Length $5. Name $25.;
input ID NameType Length Name ;
datalines;
1 First Short Jon
2 First Long Alexander
3 Middle Short Todd
4 Middle Long William
5 Last Short Smith
6 Last Long Stephanopoulos
;
run;
proc sql;
create table FirstAndMid as
select a.name as firstName, b.name as Middlename,c.name as Lastname
from
(select name from have
where Nametype='First') as a,
(select name from have
where Nametype='Middle') as b,
(select name from have
where Nametype='Last') as c
;
quit;
Note that I basically ignore the length as you didn't have any duplicate names with different lengths within a type.
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!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.