首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS报告总数

SAS报告总数
EN

Stack Overflow用户
提问于 2015-02-22 13:44:15
回答 1查看 50关注 0票数 0

我有一个看起来有点类似于下面示例的数据集:

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在列标题中生成字段呢?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 17:19:25

假设X、Y和Z应该是计数的,那么proc sql在这类事情上工作得很好。下面,在select子句中定义了四列。第一列是year。第二列sum(status='applied')计算表达式status='applied'为真的行数,以此类推。

代码语言:javascript
复制
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中的每个值都有一个列)。yeargroup都被定义为group变量。Across将状态放在列中,而不是为每个状态创建一行:

代码语言:javascript
复制
proc report data=yourdata;
  columns year status;
  define year / group;
  define status / group across;
run;

您可以在proc freq中获得类似于此的内容,只需向year*status请求一个双倍频表即可。使用norownocolnopercent选项来抑制“suppress”通常喷出的所有垃圾:

代码语言:javascript
复制
proc freq data=yourdata;
  tables year*status / norow nocol nopercent;
run;

或者你可以用proc tabulate。将yearstatus定义为class变量,下面的table语句将为您获取所需的计数:

代码语言:javascript
复制
proc tabulate data=yourdata;
  class year status;
  table year, status*n;
run;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28658492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档