This is my table I would like to create and output table that contains only the unique contact types and must contain the denom value of 1.
ID_KEY | EVENT_KEY | SERVICE_DATE | TYPE_OF_CONTACT | denom |
100 | 50068022 | 03Jan2017 | By phone | 1 |
100 | 50068024 | 03Jan2017 | By phone | . |
100 | 50068029 | 03Jan2017 | By phone | . |
100 | 50068023 | 03Jan2017 | In person - individual | . |
100 | 50068026 | 03Jan2017 | In person - individual | . |
100 | 50068025 | 03Jan2017 | In person - individual | . |
100 | 50068021 | 03Jan2017 | In person - individual | . |
100 | 50068011 | 03Jan2017 | In person - individual | . |
100 | 50068067 | 03Jan2017 | By email | . |
The final table would look like this:
ID_KEY | EVENT_KEY | SERVICE_DATE | CONTACT_TYPE | denom |
100 | 50068022 | 03Jan2017 | By phone | 1 |
100 | 50068023 | 03Jan2017 | In person - individual | . |
100 | 50068067 | 03Jan2017 | By email | . |
If I understood what you mean .
data have;
input ID_KEY /
EVENT_KEY $40. /
SERVICE_DATE date9. /
TYPE_OF_CONTACT $40. /
denom
;
format SERVICE_DATE date9.;
cards;
100
50068022
03Jan2017
By phone
1
100
50068024
03Jan2017
By phone
.
100
50068029
03Jan2017
By phone
.
100
50068023
03Jan2017
In person - individual
.
100
50068026
03Jan2017
In person - individual
.
100
50068025
03Jan2017
In person - individual
.
100
50068021
03Jan2017
In person - individual
.
100
50068011
03Jan2017
In person - individual
.
100
50068067
03Jan2017
By email
.
;
proc sql;
create table temp as
select *
from have
where catx('|',ID_KEY,SERVICE_DATE) in
(select catx('|',ID_KEY,SERVICE_DATE) from have where denom=1);
quit;
data want;
set temp;
by ID_KEY TYPE_OF_CONTACT notsorted;
if first.TYPE_OF_CONTACT;
run;
Are there more than one value of ID_Key? If so is this process supposed to provide a similar unique value for each ID_key?
Is the data in order such that all the type_of_contact values are grouped as shown or will they be mixed?
Is your "denom" always in the first record of the Id_key as shown?
If I understood what you mean .
data have;
input ID_KEY /
EVENT_KEY $40. /
SERVICE_DATE date9. /
TYPE_OF_CONTACT $40. /
denom
;
format SERVICE_DATE date9.;
cards;
100
50068022
03Jan2017
By phone
1
100
50068024
03Jan2017
By phone
.
100
50068029
03Jan2017
By phone
.
100
50068023
03Jan2017
In person - individual
.
100
50068026
03Jan2017
In person - individual
.
100
50068025
03Jan2017
In person - individual
.
100
50068021
03Jan2017
In person - individual
.
100
50068011
03Jan2017
In person - individual
.
100
50068067
03Jan2017
By email
.
;
proc sql;
create table temp as
select *
from have
where catx('|',ID_KEY,SERVICE_DATE) in
(select catx('|',ID_KEY,SERVICE_DATE) from have where denom=1);
quit;
data want;
set temp;
by ID_KEY TYPE_OF_CONTACT notsorted;
if first.TYPE_OF_CONTACT;
run;
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 save with the early bird rate—just $795!
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.