首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS: proc摘要和proc排序

SAS: proc摘要和proc排序
EN

Stack Overflow用户
提问于 2012-07-18 09:51:17
回答 1查看 5.6K关注 0票数 0

如果您在class-子句中使用proc摘要,它将按照-clause排序您的观察结果。

代码语言:javascript
复制
proc summary data=One;
   by var_1;
   class var_2 var_3 var_4;
   output out = Two(drop= _freq_ _type_);
run;

1)我说得对吗?

2)如果我不指定所有字段,会发生什么情况?

代码语言:javascript
复制
proc summary data = Three(keep= var_1 var_2 var_ 3 var_4 var_5 var_6);
   by var_1;
   class var_2 var_3;
   output out = Four(drop= _freq_ _type_ );
run;

3)哪个进程更快:proc summary还是proc sort

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-18 11:06:47

这里有几件事要注意。

  • 为了保持相同的行数,需要在proc摘要语句中指定nway选项。没有它,您将得到类变量的每一个1、2和3组合。
  • 我不知道为什么有BY语句(这显然表明数据已经按照该变量排序)。您也可以很容易地在类语句中包含var_1。
  • Proc汇总将按照BY变量的顺序对输出进行排序,然后按照指定的顺序对类变量进行排序。
  • 不管保存了哪些变量,这个逻辑都适用。
  • Proc排序在这个简单的实例中应该工作得更快,因为Proc汇总将执行不需要的进一步计算。
  • 有时,我使用Proc汇总在一个步骤(使用maxid函数)对数据进行排序和整理,例如,我每天有多个ID,而我只想使用最新的ID。这将节省数据排序,然后提取每个ID每天的最后记录。

希望这能有所帮助。

这里是我最后一点的例子。使用_all_请求返回数据集中的所有变量,这确实会在日志中为类语句中先前列出的变量创建一个警告,但可以安全地忽略它。基本上,我懒得为宽数据集分别指定其余的变量。

代码语言:javascript
复制
data have;
input unique_id custno log_dt :datetime15.;
format log_dt datetime15.;
cards;
1 123 01jul2012:13:23
2 265 01jul2012:13:56
3 342 01jul2012:15:02
4 123 01jul2012:17:12
5 342 01jul2012:18:33
6 265 02jul2012:08:41
7 123 02jul2012:10:14
8 265 02jul2012:11:05
;
run;

proc summary data=have nway;
class custno log_dt;
format log_dt dtdate9.;
output out=want (drop=_:) maxid(log_dt(_all_))=;
run;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11538685

复制
相关文章

相似问题

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