我一直試圖在200萬條記錄數據集上運行基本統計數據(Mean,StDev,Range)。 問題是我需要平均兩列,而不僅僅是一列。 這可能嗎?每組的記錄數量會有所不同。Tabulate將分別平均Val1和Val2,我需要將它們平均在一起。 附加的數據表應根據每個ID對Val1和Val2求平均值。
結果應該是:
ID 一個 | 平均 2.000 | 發網
0.8944 | 範圍
2 |
| 乙 | 3.500 | 1.0488
| 3
|
| C | 2.625 | 1.4079
| 4
|
| d | 2.700 | 1.9465
| 五
|
有沒有JSL代碼可以用來獲得我正在尋找的結果?
您需要堆疊列。 這是一個簡單的插圖腳本
Names default to here(1);
dt=New Table( "JMP QUESTION",
Add Rows( 15 ),
New Column( "ID",
Character( 1 ),
"Nominal",
Set Values(
{"A", "A", "A", "B", "B", "B", "C", "C", "C", "C", "D", "D", "D", "D",
"D"}
),
Set Display Width( 57 )
),
New Column( "Val1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 3, 2, 1, 3, 4, 5, 3, 6, 2, 1] ),
Set Display Width( 57 )
),
New Column( "Val2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 3, 2, 4, 3, 2, 1, 2, 5, 3, 1, 2, 5, 1, 1] ),
Set Display Width( 57 )
)
);
// Stack the data
dtStack = dt << Stack(invisible,
columns( :Val1, :Val2 ),
Source Label Column( "Label" ),
Stacked Data Column( "Val 1,2" ),
Name( "Non-stacked columns" )(Keep( :ID ))
);
// Generate the Statistics
dtStack << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( Mean ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Column Table(
Statistics( Std Dev ),
Analysis Columns( :Name( "Val 1,2" ) )
),
Column Table( Statistics( Range ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Row Table( Grouping Columns( :ID ) )
)
); @txnelson 這讓我得到了我需要的東西。 可悲的是,我的筆記本電腦沒有足夠的資源來處理完整的200萬行,但是我可以將其減少並獲得我需要去的地方。
太感謝了!
有幾件事可能允許您對所有2,000,000行進行運行。
1。確保在堆疊數據時,只堆疊必要的列。在我提供的圖示中,只有ID列與堆疊列一起被攜帶。
2。您可以在堆棧代碼中將“Invisible”更改為“Private”。這將創建一個數據表,但它不會創建任何Windowing代碼,因此您將無法看到它。
3。您可以壓縮列(列屬性列表檢查),這將在較小的空間中保存數據