sum は list の形式を受け入れません。 ありがとう!
Re: ループを使用してすべての列を合計するスクリプトが dt と N を次のように初期化することを追加する必要があります。
dt = Current Data Table();
N = N Col( dt );
ループを使用してすべての列を合計するこんにちは、かなり長いスクリプトを作成していますが、異なるデータ セットから複数のテーブルを作成しているため、特定のテーブルにどの列が存在するかわかりません。 サマリー テーブルは、50 列以上、場合によっては 70 列以上で作成されます。 これらの列のすべての値を合計する必要がありますが、一部のカテゴリが存在する/欠落している場合、:Name("列名") で合計を指定することはできません。 これは私が使用しようとしているループです:
Current Data Table() << New Column( "Total Die",
formula(
For( j = 1, j <= N, j++,
cols = Column( dt, j ) << getname()
);
Sum( cols );
)
);
sum は list の形式を受け入れません。 ありがとう!
スクリプティングRe: ループを使用してすべての列を合計する私の理解が正しければ、ループを構築するのではなく、'Tables > Summary' を利用して、JMP に作業を任せることができます。
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
// Get all the numeric columns
cols = dt << getColumnNames("Numeric");
// Get all the column means
dt2 = dt << Summary(Mean(cols));
これが良いかどうかは、JSL が他に何をしているかに依存するかもしれませんが、一般的には JMP プラットフォームを使用することをお勧めします。
Re: ループを使用してすべての列を合計する知識を少し広げると、この問題を処理する最も簡単な方法は、数式列を作成するのではなく、列を作成し、マトリックスを使用して JSL の機能を使用して魔法を実行することだと思います。
Names Default To Here( 1 );
dt = Current Data Table();
N = N Col( dt );
dt << New Column( "new" );
For Each Row(
dt:new = Sum( dt[Row(), index(1,ncols(dt)-1)] )
);
Re: ループを使用してすべての列を合計する計算を完全にベクトル化します。
Names Default To Here( 1 );
dt = Current Data Table();
n = N Col( dt );
vals = (dt << Get As Matrix) * J( n, 1, 1);
dt << New Column( "new", "Numeric", "Continuous",
Values( vals )
);
Re: ループを使用してすべての列を合計するおっと! 申し訳ありませんが、実際には行ごとに列を合計したいようです。 見る、例えば.
または、数式が必要な場合:
NamesDefaultToHere(1);
// How many columns in the table?
nc = RandomInteger(2, 20);
// Build the table with some random data
dt = NewTable("Sum Columns", << addMultipleColumns("Col ", nc, Numeric));
for(c=1, c<=nc, c++, Column(dt, c) << setFormula(RandomNormal()));
dt << addRows(10);
dt << runFormulas;
// Start here with the current data table
dt2 = CurrentDataTable();
cols2 = dt2 << getColumnNames("Numeric");
// Add the row-wise sum as a new formula column
afc = Expr(dt2 << newColumn("Sum over Columns", Numeric, Continuous, Formula(Sum(colsTBD))));
SubstituteInto(afc, Expr(colsTBD), Eval(cols2));
afc;
(この投稿はもともと不完全でした)。