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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.