В proc sql
также есть функция median()
(доступна в SAS 9.4).
Нормальная медиана была бы такой:
proc sql; select median(Value) as Median from table ; quit;
Средневзвешенное значение будет примерно таким, в зависимости от того, как вы хотите использовать веса:
proc sql; select median(Value*Weight) as WeightedMedian from table ; quit;
Пример: Медиана будет 2,5
data have;
input value;
datalines;
1
2
3
3
;
run;
proc sql;
create table want as
select Median(value) as med
from have;
quit;
Пример: разделить данные, поэтому мы имеем 4 строки 1,2,3,3 вместо 3
data have;
input value weight;
datalines;
1 1
2 1
3 2
;
run;
data have_seg;
set have;
retain freq;
freq= weight;
if(freq=1) then do; output; end;
else if freq > 1 then do;
do i=1 to freq; weight=1; output; end;
end;
keep value weight;
run;