如何打開多個表,將它們合併到內存中,並找出小計的結果?例如,“ c:\ 1 \”路徑中有五個數據文件,它們看起來像“ Big Class.jmp”結構。
如何在沒有“連接”的情況下按內存的5個文件按“年齡”列對“高度”列的數據進行分類和匯總。
就像在以下代碼中實現的那樣實現效果:
dir = "c:\1\";
Fs = Files In Directory( dir );
For( d = 1, d <= 5, d++,
d1 = Open( dir || fs[d] );
If( d == 1,
d2 = d1,
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close( d1, nosave );
);
);
d1 = d2<< Summary(
Group( :age ),
Sum( :height ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
腳本編寫回复:如何打開多個表,將它們合併到內存中,並找出小計的結果?這是代碼的內存版本。它不會創建任何視覺對象,也不會佔用視覺組件的任何內存,並且會創建2個內存項,1個列表和1個帶結果的矩陣。
names default to here(1);
dt = open("$SAMPLE_DATA/big class.jmp",private);
dt << set name("zippy");
dt2 = open("$SAMPLE_DATA/big class.jmp",private);
dt3 = dt2<< Concatenate( dt,private );
close(dt,nosave);
close(dt2,nosave);
summarize( dt3, bygroup = by(:age), heightSum = sum(:height));
close(dt3,nosave);
show(bygroup,heightSum);回复:如何打開多個表,將它們合併到內存中,並找出小計的結果?謝謝吉姆!
如果有100個此類文件,請將文件名設置為“ 001.JMP-100.JMP”。
根據文件名的順序一次對60個文件進行拼接,排序和匯總,然後輸出結果,因此有41個結果。
第一個連接是根據上述方法從001.Jmp-060.JMP文件中獲得第一個結果。
對於“ 002.Jmp-061.JMP”文件的第二次處理,這次如何更快地進行合併和匯總?
回复:如何打開多個表,將它們合併到內存中,並找出小計的結果?- 連接前60個
- 確保指定了“創建源列”選項
- 產生統計資料
- 讀入並將新文件連接到1-60表
- 使用“源列”從數據表1中選擇所有行
- 產生統計資料
- 重複步驟3-5,直到讀取並分析了所有100個文件