我在装有Excel 2010和PC SAS 9.4的Windows7中设置了PC SAS代码。基本上,代码所做的就是将数据集'wide2‘粘贴到当时在操作系统中打开的唯一excel文件中,然后保存它。下面是我使用的代码:
%macro paste(number);
proc print data=wide2;
run;
PROC CONTENTS DATA=wide2 /*NOPRINT*/ OUT=CNT ;
RUN;
PROC SORT DATA=CNT ;
BY VARNUM ;
RUN;
PROC SQL /*NOPRINT*/;
SELECT NAME
INTO: VARS SEPARATED BY ' '
FROM CNT ;
SELECT COUNT(DISTINCT NAME)
INTO: COLS SEPARATED BY ' '
FROM CNT ;
SELECT NOBS
INTO: ROWS
FROM CNT
WHERE VARNUM = 1;
QUIT;
proc print data=cnt;run;
FILENAME TEMP DDE "EXCEL|Sheet&number.!R1C1:R200C200" ;
data _null_ ;
file temp ;
if _n_=1 then do;
do _n_=1 to &cols ;
set cnt(keep=name rename=(name=__name__)) ;
put __name__ @;
end;
put;
end;
set wide2 ;
put &vars ;
run ;
%mend paste;因此,当我执行% paste (1)这样的宏时,它会将数据粘贴到Excel的Sheet1中。
现在,我们已经迁移到Windows 10,它具有相同的PC SAS版本,但Excel 2016。当我使用相同的数据集运行相同的代码时,PC SAS在几秒钟后挂起了一段时间,然后我不得不终止该进程。打开的excel文件没有任何变化。我甚至看不到日志,因为PC SAS挂起了。请为此提出解决方案。( PCSAS挂起时,顶部栏显示“运行数据步骤”)
发布于 2018-08-30 04:43:32
wide2数据集中有多少列和行?您发布的代码在我使用SAS 9.4M4和Office 365的系统上运行。我使用了这个数据集。
data wide2;
do id=1 to 3;
array x(15) (1:15);
output;
end;
format _numeric_ 2.;
run;https://stackoverflow.com/questions/52082129
复制相似问题