我需要將具有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