SAS中文论坛

标题: proc means过程中一个怪问题 [打印本页]

作者: shiyiming    时间: 2009-12-11 18:04
标题: proc means过程中一个怪问题
proc means 使用得非常多了,但不知为什么今天在分组求中位数时却报出错,如下:

proc means data=tt1 noprint;
var jsje;
by code;
id name xylx;
output out=x1 median=jsje50;
run;

log里提示:
ERROR:  Read Access Violation In Task ( MEANS )
Exception occurred at (66FE70BC)
Task Traceback
Address   Frame     (DBGHELP API Version 4.0 rev 5)
66FE70BC  0359F720  0001:000260BC sassfm01.dll
66FD97A2  0359F760  0001:000187A2 sassfm01.dll
66FD83A5  0359F7D8  0001:000173A5 sassfm01.dll
66FCBDC6  0359F878  0001:0000ADC6 sassfm01.dll
66FC386E  0359F89C  0001:0000286E sassfm01.dll
67008769  0359FF84  0001:00007769 sasmeans.dll
67E223EE  0359FFA0  0001:000113EE sashost.dll
67E26DE0  0359FFB4  0001:00015DE0 sashost.dll
7C80B683  0359FFEC  kernel32:GetModuleFileNameA+0x1B4

NOTE: The SAS System stopped processing this step because of errors.

但如果将上述过程中的by改为class,则可正常运行,不知为什么,请高手指点!
作者: shiyiming    时间: 2009-12-14 14:23
标题: Re: proc means过程中一个怪问题
在使用proc means; by 语句时,必须先采用proc sort;by 语句。。
作者: shiyiming    时间: 2009-12-16 08:59
标题: Re: proc means过程中一个怪问题
当然,proc sort 肯定是用过了!
作者: shiyiming    时间: 2009-12-16 13:14
标题: Re: proc means过程中一个怪问题
是不是也可能与使用'MEDIAN='这些和quantiles统计量的选项有关?proc means qmethod = os|p2来计算quantiles。os 是缺省的,很占用内存,尤其是当by的独特值很多的时候。
使用class 当然可以解决问题,如你所做的; 另外可以试试qmethod = p2,不知是否可行?

SAS有时候很怪,原因有二:1.的确很怪 2.我们无知。我觉得很合理的说法是,有时候怪我们无知,有时候怪sas很怪。




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