こんにちは、みんな
一度やったことがあって、とても痛かったのですが、台本とその記憶を失ってしまいました。 私がやろうとしていることは以下のとおりです。
Tweak_List = dt_Temp << Get Column Names("String");
for(i = 1, i <= N Items(Tweak_List),i++,
a = Left(Tweak_List[i], Length(Tweak_List[i]) - 1) || 「Δ」;
b = Tweak_List[i];
c = Left(Tweak_List[i], Length(Tweak_List[i]) - 2);
dt << New Column( Left(Tweak_List[i], Length(Tweak_List[i]) - 1) || "Δ"、数値、連続、式(if(:name1 == :name2, c - b, 0 )));
);
dt には ColName_2 と ColName という名前の列があります。Tweak_List は ColName_2 のような列名のリストです。
ColName_ という名前の新しいデルタ列を作成する必要があります。 Δ各ペアに対して式 ColName - ColName_2 が含まれていると、条件が満たされます。
エヴァルと共同で働いていたことは覚えていますが、忘れてしまいました。 助けてください
そしていつものように、最終的に 1 つの解決策を見つけて、より効率的なスクリプトで自由に再生できるようになりました。
For(i = 1, i <= N Items(Tweak_List), i++,
Eval(
Eval Expr(
dt << New Column(Left(Tweak_List[i], Length(Tweak_List[i]) - 1) || "Δ",
Numeric,
"Continuous",
Formula(
If(:ENTITY == :ENTITY_2,
As Column(Expr(Char(Left(Tweak_List[i], Length(Tweak_List[i]) - 2)))) - As Column(Expr(Char(Tweak_List[i]))),
0
)
)
)
)
);
);
Left() の代わりに Word() または Words() を使用することもできます。
Names Default To Here(1);
dt = New Table("Untitled 143",
Add Rows(1),
Compress File When Saved(1),
New Column("Column1", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column("Column1_2", Numeric, "Continuous", Format("Best", 12), Set Values([2])),
New Column("Column2", Numeric, "Continuous", Format("Best", 12), Set Values([3])),
New Column("Column2_2", Numeric, "Continuous", Format("Best", 12), Set Values([4]))
);
tweaklist = {"Column1_2", "Column2_2"};
For Each({col_name}, tweaklist,
Eval(EvalExpr(
dt << New Column(Word(1, col_name, "_") || "_Δ", Numeric, Continuous, Formula(
Expr(Name Expr(As Column(col_name))) - Expr(Name Expr(As Column(Word(1, col_name, "_"))))
));
));
);
また、数式が必要なく値だけが必要な場合は、重い評価を必要としない << Set Each Value を使用できます。
For Each({col_name}, tweaklist,
dt << New Column(Word(1, col_name, "_") || "_Δ", Numeric, Continuous, << Set Each Value(
As Column(col_name) - As Column(Word(1, col_name, "_"))
));
);