Sql 所选变量的平均值(SAS)
对于expamle,我有一个包含两个变量的表a,第一个变量是客户id,第二个变量是客户收入,范围为100到200美元。任务是创建一个表B,其中我将有平均收入150美元的客户,客户数量应最大。换句话说,我需要表B中有表A中最大数量的客户,表B中客户的平均收入应该正好等于150。使用SAS Enterprise Guide有什么优雅的方法吗?贪婪算法可能会很好地完成这项工作,这取决于数据的结构。这当然不能保证是最优的,但可以相对快速地实现 这个想法是:Sql 所选变量的平均值(SAS),sql,statistics,sas,analytics,Sql,Statistics,Sas,Analytics,对于expamle,我有一个包含两个变量的表a,第一个变量是客户id,第二个变量是客户收入,范围为100到200美元。任务是创建一个表B,其中我将有平均收入150美元的客户,客户数量应最大。换句话说,我需要表B中有表A中最大数量的客户,表B中客户的平均收入应该正好等于150。使用SAS Enterprise Guide有什么优雅的方法吗?贪婪算法可能会很好地完成这项工作,这取决于数据的结构。这当然不能保证是最优的,但可以相对快速地实现 这个想法是: 计算所有记录的平均值 如果平均价格是150美元
如果该算法适用于您的数据,那么可能会有更快的实现方法。按收入从低到高对记录进行排序。然后计算所有记录1-N的平均值。找到N,其中平均值=150
data test;
do id = 1 to 1000;
income = 100 + round(ranuni(1)*100,1);
output;
end;
run;
proc sort data=test;
by income;
run;
data want(where=(ave<=150));
set test;
retain sum 0;
sum = sum + income;
ave = sum / _n_;
drop sum;
run;
数据测试;
do id=1至1000;
收入=100+轮(拉努尼(1)*100,1);
产出;
结束;
跑
proc排序数据=测试;
按收入计算;
跑
我不认为有一种优雅的方法可以得到这样一个最大子集。如果有,我也很好奇。