SAS: объединить два участка в один по группе
У меня есть два участка, которые я хотел бы объединить в один. Каждый график представляет долю настоящих / несуществующих наблюдений по их соответствующим совокупным результатам испытаний за год
Таким образом, на графике я хотел бы видеть столбики рядом для групп результатов тестов, но считая количество подарков, чтобы не присутствовать
Чтобы представить эту проблему, это то, что у меня есть в настоящее время:
data test_scores;
do i = 1 to 200;
score = ranuni(200);
output;
end;
drop i;
run;
data test_scores_2;
set test_scores;
if _n_ le 100 then flag = 0;
else flag = 1;
run;
data test_scores_2_0 test_scores_2_1;
set test_scores_2;
if flag = 0 then output test_scores_2_0;
else if flag = 1 then output test_scores_2_1;
run;
PROC GCHART
DATA=test_scores_2_0
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
PROC GCHART
DATA=test_scores_2_1
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
бары должны составлять до 100% для нынешних баров должны составлять до 100% для не присутствующих
ТИА
2 ответа
proc sgplot
в помощь. Использовать group=
Возможность указать две отдельные группы. Установите прозрачность на 50%, чтобы одна гистограмма не покрывала другую.
proc sgplot data=test_scores_2;
histogram score / group=flag transparency=0.5 binwidth=.05;
run;
С Proc GCHART
ты можешь использовать VBAR
опции GROUP=
а также G100
чтобы получить бары, которые представляют проценты в группе. Это полезно, когда группы имеют разные значения.
SUBGROUP=
Параметр разбивает вертикальную черту в соответствии с различными значениями переменной подгруппы и производит автоматическую окраску и условные обозначения, соответствующие подгруппам.
Когда SUBGROUP
переменная (или значения) соответствуют 1:1 группе, в результате получается диаграмма с другим цветом для каждой группы и легенда, соответствующая группе.
Например, измените ваши данные так, чтобы в группе 1 было 50, а в группе 2 - 150:
data test_scores;
do _n_ = 1 to 200;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=flag
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1 ;
run;
Выход
Аналогичная диаграмма, показывающая влияние переменной подгруппы со значениями, отличными от значений группы.
data test_scores;
do _n_ = 1 to 200;
subgroup = ceil(5 * ranuni(123)); * random 1 to 5;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=subgroup /* has integer values in [1,5] */
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1;
run;