我需要将具有100,000行* 100,000列的sas数据集打印到excel文件中。 Proc导出或ODS html语句正在中断,因此无法打印。将excel文件中有100,000列的sas数据集打印到
文件语句中的数据能够打印相同的数据。但是,由于它们的逻辑记录长度限制,打印不合适,基本上我的一行被分解成3行。 在数据处理方面,有没有出路或是SAS的限制?
我需要将具有100,000行* 100,000列的sas数据集打印到excel文件中。 Proc导出或ODS html语句正在中断,因此无法打印。将excel文件中有100,000列的sas数据集打印到
文件语句中的数据能够打印相同的数据。但是,由于它们的逻辑记录长度限制,打印不合适,基本上我的一行被分解成3行。 在数据处理方面,有没有出路或是SAS的限制?
不是SAS的限制,而是Excel的限制,它可以处理高达16384列和高达约100万行,具体取决于版本。 Excel并不是要处理这个数量级的数据集;使用适当的数据库。
你当然不能在任何系统中将它变成excel。
您应该可以将其转换为另一种格式,如文本文件。例如:
data mydata;
array vars[100000];
do _n_=1 to 10;
do _t = 1 to dim(vars);
vars[_t]=_t;
end;
output;
end;
drop _t;
run;
data _null_;
file "c:\temp\myfile.csv" dlm=',' lrecl=2000000;
set mydata;
put _all_;
run;
*把所有并没有真正正常工作了这一点,但我不知道你的变量名或设置我真的不能给你一个更好的解决方案;很可能你可以使用捷径来定义put语句。
LRECL的最大值取决于您的操作系统,但我认为它们中的大多数可以处理一两百万。当然Win7可以。你也可以将PROC EXPORT用于csv,但是你必须从日志中获取(300k行)代码,并将LRECL修改为更大,因为它默认为32767,我认为你不能修改它在proc中。
SAS/IML也将允许另一种选择。我不知道你能真正做到100K * 100K任何合理的系统上(如果它是数字8个字节的矩阵元素,你在存储需要80个十亿字节...)
proc iml;
x=j(1e5,1e5,12345);
filename out ’c:\temp\myfile.csv’;
file out lrecl=800000;
do i=1 to nrow(x);
do j=1 to ncol(x);
put (x[i,j]) 5.0 +5 ',' @;
end;
put;
end;
closefile out;
quit;
编辑:看来IML中的lrecl语句不完全正确,否则我在这里做了一些错误 - 但这可能是我系统的错误。即使lrecl显然足够长,我也会得到缓冲区溢出。
一旦这个庞大的数据集在excel中,您将如何处理它? – sasfrog
但即使制表符或逗号分隔的文本文件也是这样做的....据我所知,文本文件不应该有任何这样的限制 – user2516102
我需要测试我的矩阵分解逻辑....... .. – user2516102