SAS中文论坛

标题: means过程BY&CLASS比较 [打印本页]

作者: shiyiming    时间: 2013-1-23 15:42
标题: means过程BY&CLASS比较
9261  proc means data=sasuser.heart min mean max;
9262  var arterial heart cardiac urinary;
9263  class survive shock;
9264  run;

NOTE: 有 20 个从数据集 SASUSER.HEART 读取的观测。
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间          0.12 秒
      CPU 时间          0.06 秒


9265  proc sort data=sasuser.heart out=work.heart;
9266  by survive shock;
9267  run;

NOTE: 有 20 个从数据集 SASUSER.HEART 读取的观测。
NOTE: 数据集 WORK.HEART 有 20 个观测和 8 个变量。
NOTE: “PROCEDURE SORT”所用时间(总处理时间):
      实际时间          0.03 秒
      CPU 时间          0.03 秒


9268  proc means data=sasuser.heart min mean max;
9269  var arterial heart cardiac urinary;
9270  by survive shock;
9271  run;

NOTE: 正在写入 HTML Body(主体)文件: sashtml13.htm
ERROR: 数据集 SASUSER.HEART 不是以升序顺序排序的。当前  BY 组是“Survive=SURV”,下一个 BY
组是“Survive=DIED”。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: 有 2 个从数据集 SASUSER.HEART 读取的观测。
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间          0.12 秒
      CPU 时间          0.07 秒

怎么不成功呢?求解答
作者: shiyiming    时间: 2013-1-24 19:10
标题: Re: means过程BY&CLASS比较
首先我讲一下你不成功的原因,是你在排序的时候将你排序后的数据集存储到了临时逻辑库work当中,但是你在用proc means 的时候使用的数据集仍然是sasuser.heart.这样肯定会报错的呀。
程序为:
proc sort data=sasuser.heart  out=work.heart;
  by survive shock;
run;

proc means data=heart min mean max;
  var arterial heart cardiac urinary;
  by survive shock;
run;

其次我要讲的是class 和 by 语句指定的变量在分析中都是起分类的作用。
区别在于使用by语句的时候要求数据集先按照by 中的变量进行排序,且输出时by变量的每个值分别提供一个表。
class语句数据集不需要按class中的变量进行排序,将所有的结果排列在同一个表中。
作者: shiyiming    时间: 2013-5-9 11:56
标题: Re: means过程BY&CLASS比较
BY is usually faster than class.--more efficient.
JingJu
作者: shiyiming    时间: 2013-7-25 05:49
标题: Re: means过程BY&CLASS比较
add the time of PROC SORT???




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2