全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6959 7
2012-06-01
悬赏 288 个论坛币 已解决
各位SAS高手,有一个问题,小弟重金向您讨教。小弟使用SAS有7年历史,从来没有遇到这个情况,网上好像也没有查到明确解决方法。我使用SAS9.1英文破解版进行以下data步,报错。以下是log信息:

102  data file.crsp_daily_stock;
103  set crsp.daily_stock_1925_1979 crsp.daily_stock_1980_1999 crsp.daily_stock_2000_2010;
104  run;
ERROR: Expecting page 189952, got page -1 instead.
ERROR: Page validation error while reading CRSP.DAILY_STOCK_2000_2010.DATA.
ERROR: File CRSP.DAILY_STOCK_2000_2010.DATA is damaged. I/O processing did not complete.
NOTE: The data step has been abnormally terminated.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 24223887 observations read from the data set CRSP.DAILY_STOCK_1925_1979.
NOTE: There were 36108353 observations read from the data set CRSP.DAILY_STOCK_1980_1999.
NOTE: There were 15765916 observations read from the data set CRSP.DAILY_STOCK_2000_2010.
WARNING: The data set FILE.CRSP_DAILY_STOCK may be incomplete.  When this step was stopped there
         were 76098156 observations and 63 variables.
NOTE: DATA statement used (Total process time):
      real time           19:10.65
      cpu time            1:46.03

我对于上述每个单一数据集进行proc sort也同样报错。我根据网上的指示,使用

proc datasets library=crsp;
repair daily_stock_1925_1979 daily_stock_1980_1999 daily_stock_2000_2010;
quit;
run;
但是也没有起作用。另外补充一下,我这三个要合并的数据集每个大小都在10G左右。问题的出现跟数据集的大小是不是有关系?

请高人明确指导问题出在哪里?如何补救?非常感谢。

最佳答案

davil2000 查看完整内容

%macro test/parmbuff ; %let yourlib=file; %let number=1; %let dsname=%scan(&syspbuff,&number, ( , ) ); %do %while(&dsname ne); proc datasets; append base=&yourlib..test1 data=&yourlib..&dsname force; run; quit; %let number=%eval(&number+1); %let dsname=%qscan(&syspbuff,&number,( , ) ); %end; %mend ; %test(daily_stock_1925_1979,daily_stock_1980_1999,daily_st ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-6-1 06:38:04
nectar 发表于 2012-6-1 11:24
可能是我的电脑内存问题。但是我原来处理过比这还要大的数据,好像也没崩溃过。但是我原来使用的是另外一 ...
%macro test/parmbuff  ;
   %let yourlib=file;
   %let number=1;
   %let dsname=%scan(&syspbuff,&number, ( , ) );
   %do %while(&dsname ne);
proc datasets;
append base=&yourlib..test1 data=&yourlib..&dsname  force;
run; quit;
%let number=%eval(&number+1);
        %let dsname=%qscan(&syspbuff,&number,( , ) );
   %end;
%mend ;

%test(daily_stock_1925_1979,daily_stock_1980_1999,daily_stock_2000_2010);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-1 08:09:04
可能是超过了PC的物理内存。尝试的解决办法为:
%macro test/parmbuff  ;
   %let yourlib=   ;
   %let number=1;
   %let dsname=%scan(&syspbuff,&number, ( , ) );
   %do %while(&dsname ne);
proc datasets;
append base=&yourlib..test1 data=&yourlib..&dsname  force;
run; quit;
%let number=%eval(&number+1);
        %let dsname=%qscan(&syspbuff,&number,( , ) );
   %end;
%mend ;


%test(data1,data2,data8,data0);

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-1 11:24:55
davil2000 发表于 2012-6-1 08:09
可能是超过了PC的物理内存。尝试的解决办法为:
%macro test/parmbuff  ;
   %let yourlib=   ;
可能是我的电脑内存问题。但是我原来处理过比这还要大的数据,好像也没崩溃过。但是我原来使用的是另外一个电脑。这个电脑的sas是新装的。不知道有无影响。我不太清楚你上面的测试程序的用途何在?能具体说明白一点吗?我用SAS很久,但是水平很一般。再等等,如果再过一天,没有更好的答案,我就把悬赏币给您。谢谢回复。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-1 13:18:43
我不缺论坛币。
还不够具体吗?
加上库名称(file)、数据集名称,就可以运行了。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-1 13:25:54
SAS读入数据集时,会在内存中建立PDV。
按照主贴的CODE,即便高性能PC也吃不消的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群