列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?やあ、
JMP PRO v16 を使用しています
数値を含む 10 列のグループがあり、これら 10 列間の可能なすべての組み合わせでスコアの合計を取得したいと考えています (例: 列 A+ 列 B、列 A+ 列 B + 列 C、列 B +列 C など)。
手伝ってくれてどうもありがとう
自動化とスクリプト作成Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?やあ@divisiveferret8 、、
JMP でこれを対話的に行うための高速な方法はわかりませんが、いくつかの JSL を使用すると、これらの列をすばやく作成できます。
Names Default to Here (1);
dt = Current Data Table();
// Get the number of columns
ncols = N Col( dt );
// Nested loop to go through all pairwise combinations of columns
For( i = 1, i < ncols, i++,
For( j = i + 1, j <= ncols, j++,
colName1 = Column( dt, i ) << get name;
colName2 = Column( dt, j ) << get name;
// create new column
newColName = colName1 || " + " || colName2;
dt << New Column( newColName, Numeric, "Continuous", Format( "Best", 12 ) );
// compute the sum
Column( dt, newColName ) << set each value(
Column( dt, colName1 )[Row()] + Column( dt, colName2 )[Row()]
);
)
);
//編集//
上記のコードはテーブル内の列のすべての組み合わせを対象としていますが、列のグループについて質問していることがわかります。
Names Default to Here (1);<BR />dt = Current Data Table();
// List of specific columns
// columns = {"Column A", "Column B", "Column C", "Column D", "Column E", "Column F", "Column G", "Column H", "Column I", "Column J"};
// Using selected columns
// columns = dt << Get Selected Columns;
// Referencing by Group Name
columns = dt << get column group( "XY" );
// Number of specific columns
ncols = N Items( columns );
// Nested loop to go through all pairwise combinations of specified columns
For( i = 1, i < ncols, i++,
For( j = i + 1, j <= ncols, j++,
colName1 = columns[i]<<GET name=""></GET>
特定の列のリストや選択した列の使用など、他のオプションをいくつか残しました。
これがお役に立てば幸いです!
@ジュリアン
Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?どうもありがとうございます! このスクリプトはペアごとの組み合わせのみを生成すると思いますが、可能なすべての組み合わせを取得する方法はありますか? (つまり、2、3、4、5、6、7、8、9 列の可能なすべての組み合わせ)、
ご協力に改めて感謝申し上げます。
Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?最終結果がどうなる必要があるのか、正確にはわかりません。ただし、以下のスクリプトは、7 (10 ではありませんが、10 個でも機能します) の数値列を持つデータ テーブルの列のすべての組み合わせを合計します。作成される列の組み合わせごとに合計を含む新しいテーブルが作成されます。

Names Default To Here( 1 );
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
startCol = 3;
endCol = N Col( dt ) - startCol - 1;
colNames = dt << get column names( string );
Remove From( colNames, 1, startCol - 1 );
dtOutput = New Table( "output", New Column( "Columns Used", character ), New Column( "Sum" ) );
// Build Combinations
For( nInCombo = 2, nInCombo <= endCol, nInCombo++,
combos = NChooseK Matrix( endCol, nInCombo );
Show( endcol, combos );
For( row = 1, row <= N Rows( combos ), row++,
Current Data Table( dt );
name = "";
cols = N Cols( combos );
code = "x=Sum( col sum( :\!"" || colNames[combos[row, 1, 1]] || "\!"n)";
name = colNames[combos[row, 1, 1]];
For( col = 2, col <= cols, col++,
code = code || ", col sum( :\!"" || colNames[combos[row, col, 1]] || "\!"n)";
name = name || " + " || colNames[combos[row, col, 1]];
);
code = code || " )";
Eval( Parse( code ) );
dtOutput << add rows( 1 );
dtOutput:Columns Used[N Rows( dtOutput )] = name;
dtOutput:Sum[N Rows( dtOutput )] = x;
);
);
行ごとに合計を実行したい場合は、コードを簡単に変更して、既存のデータテーブルに組み合わせごとに新しい列を作成できます。
Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?こんにちは、ジムさん
手伝ってくれてどうもありがとう、
これはまさに私が探していたものです。可能であれば、各組み合わせの合計を含む列を取得する必要があります(2、3、4、5、6、7、8、および 9 列の可能なすべての組み合わせ)。
私は JSL を始めたばかりですが、皆さんのご協力に本当に感謝しています。
Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?以前に提出したコードを変更したものは次のとおりです。このコードは、最初の 10 列の組み合わせごとに新しい列を追加します。1013 個の新しい列が追加されます。データテーブルへの追加が正しいか確認してください。
Names Default To Here( 1 );
dt = data table("sum combined");
startCol = 2;
endCol = N Col( dt ) ;
colNames = dt << get column names( string );
// Build Combinations
For( nInCombo = 2, nInCombo <= endCol, nInCombo++,
combos = NChooseK Matrix( endCol, nInCombo );
For( row = 1, row <= N Rows( combos ), row++,
// create the column name and the formula for the new column
name = "";
cols = N Cols( combos );
code = "Sum( :\!"" || colNames[combos[row, 1, 1]] || "\!"n";
name = "\!"" || colNames[combos[row, 1, 1]];
For( col = 2, col <= cols, col++,
code = code || ", :\!"" || colNames[combos[row, col, 1]] || "\!"n";
name = name || " + " || colNames[combos[row, col, 1]];
);
name = name || "\!"";
code = code || " )";
eval(parse("dt << new column(" || name || ", formula(" || code || "));"));
// Uncomment the next line to remove the formula for the column. This
// will probably make the data table run faster
//column(dt,ncols(dt)) << delete property("formula");
);
);Re: 列のグループのさまざまな組み合わせの合計を取得するにはどうすればよいですか?ジムさん、ご協力ありがとうございました!