2015-02-22 2 views
0

У меня есть набор данных, который выглядит немного похож на примере ниже:отчетность SAS составляет

ID Год Колледж Отдел градусы Статус

12 2014 Engineering CS MS Applied

12 2014 Engineering CS MS допущенного

12 2014 Engineering CS MS Поступил

88 2013 Engineering ME PHD Applied

88 2013 Engineering ME PHD Допускаются

44 2014 Engineering CE MS Applied

Я пытаюсь подготовить доклад, который больше походит на это:

года Applied Допускаются Поступил

2013 XYZ

2014 XYZ

Я знаю, как для фильтрации наборов данных для колледжа/отдела/степени, но как я могу использовать SAS для создания полей в заголовках столбцов? Любая помощь приветствуется.

+0

Вы ищете для набора данных или вывода в окне результатов? Если вывод выглядит в proc freq/tabulate/report. – Reeza

ответ

2

Предполагая, что X, Y и Z должны быть считаны, proc sql отлично подходит для такого рода вещей. Ниже в пункте select определены четыре столбца. Первая колонка - year. Второй столбец, sum(status='applied'), подсчитывает количество строк, где выражение status='applied' истинно и так далее для следующих двух столбцов.

proc sql; 
select year, 
     sum(status='Applied') as applied, 
     sum(status='Admitted') as admitted, 
     sum(status='Enrolled') as enrolled 
from yourdata 
group by year 
; 
quit; 

Вы также можете использовать proc report и легко создавать столбцы динамически (один столбец для каждого значения, найденного в status). year и group определяются как переменные group. Across ставит статусы в столбцах, а не создавать строку для каждого состояния:

proc report data=yourdata; 
    columns year status; 
    define year/group; 
    define status/group across; 
run; 

Вы можете получить что-то похожее на это с proc freq, просто запрашивает таблицу частот TwoWay с year*status. Используйте norow, nocol, nopercent варианты подавить все барахло, что `прок частота обычно выкладывает:

proc freq data=yourdata; 
    tables year*status/norow nocol nopercent; 
run; 

Или вы могли бы использовать proc tabulate. Определение year и status в качестве class переменных, а следующее table заявление поможет вам подсчеты вы хотите:

proc tabulate data=yourdata; 
    class year status; 
    table year, status*n; 
run; 
+0

Благодарим вас за помощь. Я закончил тем, что сделал почти все, что вы упомянули. Я получил подсчеты с PROC SQL, но использовал его по-другому, поэтому мне пришлось также использовать PROC TRANSPOSE, а затем использовать PROC REPORT для форматирования вывода. Еще раз спасибо. – user1624577

Смежные вопросы