SAS报告总数
我有一个看起来有点类似于以下示例的数据集: ID年大学部学位状态 12 2014工程CS MS应用 12 2014年工程CS MS录取 2014年12月工程CS MS注册 88 2013年工程ME博士学位申请 88 2013年获得工程机械博士学位 44 2014工程CE MS应用 我正试图制作一份更像这样的报告: 申请入学年份 2013 X Y Z 2014 X Y ZSAS报告总数,sas,Sas,我有一个看起来有点类似于以下示例的数据集: ID年大学部学位状态 12 2014工程CS MS应用 12 2014年工程CS MS录取 2014年12月工程CS MS注册 88 2013年工程ME博士学位申请 88 2013年获得工程机械博士学位 44 2014工程CE MS应用 我正试图制作一份更像这样的报告: 申请入学年份 2013 X Y Z 2014 X Y Z 我知道如何过滤College/Dept/Deg的数据集,但如何使用SAS在列标题中创建字段?非常感谢您的帮助。假设X、Y和Z都
我知道如何过滤College/Dept/Deg的数据集,但如何使用SAS在列标题中创建字段?非常感谢您的帮助。假设X、Y和Z都是计数,
proc-sql
非常适合这种情况。下面,在select
子句中定义了四列。第一列是年
。第二列sum(status='applied')
统计表达式status='applied'
为true的行数,依此类推
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
中找到的每个值对应一列)<代码>年份和组
都定义为组
变量<代码>跨越将状态放在列中,而不是为每个状态创建一行:
proc report data=yourdata;
columns year status;
define year / group;
define status / group across;
run;
您只需请求一个带有year*status
的双向频率表,就可以通过proc freq
获得类似的结果。使用norow
、nocol
、nopercent
选项来抑制“proc freq”正常吐出的所有垃圾:
proc freq data=yourdata;
tables year*status / norow nocol nopercent;
run;
或者您可以使用proc tablate
。将年份
和状态
定义为类
变量,下面的表
语句将为您提供所需的计数:
proc tabulate data=yourdata;
class year status;
table year, status*n;
run;
您是否在“结果”窗口中查找数据集或输出?如果是输出,请查看proc freq/TABLATE/report。谢谢您的帮助。最后我把你提到的几乎所有东西都混合起来了。我用procsql获取计数,但使用方式不同,因此我还必须使用PROC TRANSPOSE,然后使用PROC REPORT格式化输出。再次感谢。