Sas 为什么PROC意味着内存如此密集?

Sas 为什么PROC意味着内存如此密集?,sas,Sas,我总结了一个由5个类别变量组成的大约100万行的数据集。我最初用PROC MEANS尝试了这个方法,但不断收到内存警告,这个过程花了我很长时间。最后,我只使用PROC-SQL和GROUP-BY语句,整个过程只花了大约10秒。为什么他们的表现如此不同?我的理解是,PROC意味着只在后台创建一个SQL语句,因此我假设这两种方法非常相似。如果您喜欢PROC表示法,您也可以使用proc summary而不是proc means或proc sql,因为它几乎与proc means相同,但出于某些原因,它使

我总结了一个由5个类别变量组成的大约100万行的数据集。我最初用PROC MEANS尝试了这个方法,但不断收到内存警告,这个过程花了我很长时间。最后,我只使用PROC-SQL和GROUP-BY语句,整个过程只花了大约10秒。为什么他们的表现如此不同?我的理解是,PROC意味着只在后台创建一个SQL语句,因此我假设这两种方法非常相似。

如果您喜欢
PROC
表示法,您也可以使用
proc summary
而不是
proc means
proc sql
,因为它几乎与
proc means
相同,但出于某些原因,它使用的内存较少


不确定为什么会出现这种情况,但我知道过去我通过将代码从
proc means
切换到
proc summary
来避免内存问题

如果您更喜欢
proc
表示法,也可以使用
proc summary
而不是
proc means
proc sql
,因为它几乎与
proc means
相同,但出于某些原因,它使用的内存较少


不确定为什么会出现这种情况,但我知道过去我通过将代码从
proc means
切换到
proc summary
来避免内存问题

您需要显示用于获取任何解释的实际代码。如果一个简单的分组得到了您想要的结果,那么您可能忘记了在PROC-MEANS代码中包含NWAY选项。或者您忘记添加NOPRINT选项以防止它生成您不想要的大输出。SAS在6.x版本之一之前不支持SQL。我很确定
proc意味着
早于此,并且使用它自己的代码库。您的proc意味着step有BY语句还是CLASS语句?CLASS语句需要更多的内存,因为在处理整个数据集时,类变量的每个级别的运行总数都保存在内存中。BY语句依赖于排序顺序。PROC的意思不仅仅是在后台创建SQL,我想在有隐式传递到关系数据库的情况下除外。即便如此,100万条记录出现问题的几率也很小。您需要显示用于获取任何解释的实际代码。如果一个简单的分组得到了您想要的结果,那么您可能忘记了在PROC-MEANS代码中包含NWAY选项。或者您忘记添加NOPRINT选项以防止它生成您不想要的大输出。SAS在6.x版本之一之前不支持SQL。我很确定
proc意味着
早于此,并且使用它自己的代码库。您的proc意味着step有BY语句还是CLASS语句?CLASS语句需要更多的内存,因为在处理整个数据集时,类变量的每个级别的运行总数都保存在内存中。BY语句依赖于排序顺序。PROC的意思不仅仅是在后台创建SQL,我想在有隐式传递到关系数据库的情况下除外。即便如此,100万条记录也不足以解决问题。