I have the following data
id str date
1 car 01/01/2004
1 bus 01/01/2004
2 car 02/05/2005
2 car 03/06/2006
3 car 02/02/2002
3 truck 02/02/2002
3 car 03/03/2003
3 truck 03/03/2003
3 car 04/04/2004
3 bus 04/04/2004
3 truck 05/05/2005
I want to find the frequency of id who bought items the same day where each id will be counted only once if they bought the same item's combination multiple times.
Here is my output:
car-bus 2
car- truck 1
then I want to find those who bought only one item (each id counted once)
car 1
truck 1
Thanks!
This will require multiple steps, I can't say I am 100% confident in term of understanding what you need, but here is a try, please let us know if it fits your bill:
data have;
input id str :$8. date: mmddyy10.;
cards;
1 car 01/01/2004
1 bus 01/01/2004
2 car 02/05/2005
2 car 03/06/2006
3 car 02/02/2002
3 truck 02/02/2002
3 car 03/03/2003
3 truck 03/03/2003
3 car 04/04/2004
3 bus 04/04/2004
3 truck 05/05/2005
;
/*sort and dedup*/
proc sort data=have out=h_sort nodupkey;
by id date str;
run;
/*creat group variable*/
data h_grouping;
do until (last.date);
set h_sort;
by id date str;
length group $ 100;
group=catx('-',group,str);
end;
run;
/*count*/
proc sql;
select group, count(distinct id) as id_ct from
h_grouping
group by group
;
quit;
This will require multiple steps, I can't say I am 100% confident in term of understanding what you need, but here is a try, please let us know if it fits your bill:
data have;
input id str :$8. date: mmddyy10.;
cards;
1 car 01/01/2004
1 bus 01/01/2004
2 car 02/05/2005
2 car 03/06/2006
3 car 02/02/2002
3 truck 02/02/2002
3 car 03/03/2003
3 truck 03/03/2003
3 car 04/04/2004
3 bus 04/04/2004
3 truck 05/05/2005
;
/*sort and dedup*/
proc sort data=have out=h_sort nodupkey;
by id date str;
run;
/*creat group variable*/
data h_grouping;
do until (last.date);
set h_sort;
by id date str;
length group $ 100;
group=catx('-',group,str);
end;
run;
/*count*/
proc sql;
select group, count(distinct id) as id_ct from
h_grouping
group by group
;
quit;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.