特定の変数リストのモードを取得しようとしています。モードが一意でない場合、モードを取得するためのサブクエリが (より大きなクエリで) 2 つの値を返さないように、モードの平均を返したいと考えています。ただし、モードが一意の場合、平均クエリは何らかの理由で欠損値を返します。
次のサンプルデータがあります。
data have;
input betprice;
datalines;
1.05
1.05
1.05
6
run;
PROC PRINT; RUN;
proc sql;
select avg(betprice)
from
(select betprice, count(*) as count_betprice from have group by betprice)
having count_betprice = max(count_betprice);
quit;
モードが一意にならないように betprice フィールドにさらにいくつかの観測値を追加すると、平均値が返されます。
data have;
input betprice;
datalines;
1.05
1.05
1.05
6
6
6
run;
PROC PRINT; RUN;
最も頻度の高い 2 つの値のモードまたは平均が常に返されるように、このクエリを変更するにはどうすればよいですか。
これについて助けてくれてありがとう。