リストに保存されている名前を持つすべての列を合計する以下にほぼ同じ名前を含む列のリストを作成しました。
Xlist = {};
Yリスト = {};
for(i = 1, i < ncols(dt2), i++,
もしも(
contains(dt2:i<< 名前を取得, "XXX") > 0, insert into(Xlist, dt2:i<< 名前を取得),
contains(dt2:i<< 名前を取得, "YYY") > 0, insert into(Ylist, dt2:i<< 名前を取得),
)
);
Xcolumn と Ycolumn の合計を示す新しい列を作成したいと考えています。 私にとってはまったくうまくいきません。 私は正しいことをしていないはずです... 助けてください。
dt2 << New Column( "Xsum", Numeric, Continuous, Format( "Best", 12 ),
方式(
sum(eval(Xlist)),
)
);
Re: リストに格納されている名前の列をすべて合計するわあ、ジム、ありがとう。
これは完璧に機能します。
Re: リストに格納されている名前の列をすべて合計する新しい列内の数式セクションは、期待どおりに解析および評価されません。これに対処する最善の方法は、手動で入力した場合とまったく同じように、完全な New Column フレーズのリテラル文字列を生成し、その行を実行することであることがわかりました。以下のコードはそれを行います
Names Default To Here( 1 );
dt2 = Current Data Table();
Xlist = "";
Ylist = "";
For( i = 1, i < N Cols( dt2 ), i++,
If(
Contains( column(dt2,i) << get name, "XXX" ) > 0, Xlist=Xlist || ":" || char(column(dt2,i) << get name) || ",",
Contains( column(dt2,i) << get name, "YYY" ) > 0, Ylist=Ylist || ":" || char(column(dt2,i) << get name) || ","
)
);
eval(parse("dt2 << New Column( \!"Xsum\!", Numeric, Continuous, Format( \!"Best\!", 12 ), Formula( Sum( "||Xlist ||") ) );"));
eval(parse("dt2 << New Column( \!"Ysum\!", Numeric, Continuous, Format( \!"Best\!", 12 ), Formula( Sum( "||Ylist ||") ) );"));