私は、200万レコードのデータセットに対して基本的な統計(Mean、StDev、Range)を実行しようとしています。 1つだけではなく、2つの列を平均する必要があるということです。 これは可能ですか?各グループのレコード数は異なります。TabulateはVal1とVal2を別々に平均します、それらを一緒に平均する必要があります。 添付されたデータ表は、各IDに基づいてVal1とVal2を平均化する必要があります。
結果は以下のようになります。
ID A | 平均 2.000 | StDev
0.8944 | 範囲
2 |
| B | 3.500 | 1.0488
| 3
|
| C | 2.625 | 1.4079
| 4
|
| D | 2.700 | 1.9465
| 5
|
探している結果を得るために使用できる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。スタックコードの「不可視」を「非公開」に変更できます。これによりデータテーブルが作成されますが、Windowingコードは作成されないため、表示することはできません。
3。あなたは、より少ないスペースでデータを保存する列を圧縮することができます(Column Property List Check)。