我知道在mysql中没有聚合函数来计算模式(你必须做很多步骤)。但我认为在proc sql应该是可能的。有办法吗? 代码就像这样:
select phones, mode(state_id)as state from
xxx.listings_abr3
group by phones
错误是:
无法找到功能模式。
谢谢!
答案 0 :(得分:5)
MODE
中可以使用子查询 proc sql
。
data have;
call streaminit(7);
do id = 1 to 100;
x = rand('Geometric',.2);
output;
end;
run;
proc sql;
select x as mode from (
select x, count(1) as count from have group by x
)
having count=max(count);
quit;
这利用了SAS为您做的自动重新融合;如果你想避免这种情况,你需要做更多的工作才能让声明工作。
您可能仍需要对此进行进一步的工作,因为您可能有多种模式,但这并不区分它们(它会返回所有模式)。
答案 1 :(得分:3)
使用Joe在答案中给出的方法,以下是按组计算模式的方法:
data have;
call streaminit(7);
do n_group = 1 to 3;
do id = 1 to 100;
x = rand('Geometric',.2);
output;
end;
end;
run;
proc sql;
select n_group, x as mode from (
select n_group, x, count(1) as count from have group by n_group, x
)
group by n_group
having count=max(count);
quit;