SAS 查找数据集中的顶级组合
SAS Find Top Combinations in Dataset
各位见鬼 --
我有一些销售数据,如下所示:
data have;
input order_id item $;
cards;
1 A
1 B
2 A
2 C
3 B
4 A
4 B
;
run;
我想知道的是最受欢迎的商品组合是什么。例如在上面的例子中,有 2 个订单包含项目 A 和 B,1 个订单是 A 和 C,1 个订单是 B。输出不同组合以及所下订单数量的最佳方法是什么?
解决这个问题的方法有很多种,我不敢妄下定论说哪一种是最好的。这是您可以使用的相当简单的方法:
- 转置数据,使每个订单只有 1 行,每个产品都有一个指标变量。
- 将转置后的数据集输入
proc corr
以生成指示变量的相关矩阵,并寻找最强的相关性。
好像没有排列问题,你可以试试这个:
proc sort data=have;
by order_id item;
run;
data temp;
set have;
by order_id;
retain comb;
length comb ;
comb=cats(comb,item);
if last.order_id then do;
output;
call missing(comb);
end;
run;
proc freq data=temp;
table comb/norow nopercent nocol nocum;
run;
各位见鬼 --
我有一些销售数据,如下所示:
data have;
input order_id item $;
cards;
1 A
1 B
2 A
2 C
3 B
4 A
4 B
;
run;
我想知道的是最受欢迎的商品组合是什么。例如在上面的例子中,有 2 个订单包含项目 A 和 B,1 个订单是 A 和 C,1 个订单是 B。输出不同组合以及所下订单数量的最佳方法是什么?
解决这个问题的方法有很多种,我不敢妄下定论说哪一种是最好的。这是您可以使用的相当简单的方法:
- 转置数据,使每个订单只有 1 行,每个产品都有一个指标变量。
- 将转置后的数据集输入
proc corr
以生成指示变量的相关矩阵,并寻找最强的相关性。
好像没有排列问题,你可以试试这个:
proc sort data=have;
by order_id item;
run;
data temp;
set have;
by order_id;
retain comb;
length comb ;
comb=cats(comb,item);
if last.order_id then do;
output;
call missing(comb);
end;
run;
proc freq data=temp;
table comb/norow nopercent nocol nocum;
run;