我有一个看起来有点类似于下面示例的数据集:
ID年大学系状况
12 2014工程CS MS应用
12 2014工程CS MS获接纳
12 2014工程CS MS注册
88 2013工程医学博士学位应用
88 2013工程医学博士承认
44 2014工程CE MS应用
我正试图编写一份更像这样的报告:
申请入学年份
2013年X-Y Z
2014年X-Y Z
我知道如何过滤学院/部门/Deg的数据集,但是如何使用SAS在列标题中生成字段呢?任何帮助都是非常感谢的。
发布于 2015-02-22 17:19:25
假设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中获得类似于此的内容,只需向year*status请求一个双倍频表即可。使用norow、nocol、nopercent选项来抑制“suppress”通常喷出的所有垃圾:
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;https://stackoverflow.com/questions/28658492
复制相似问题