Hallo alle
Ich habe das einmal gemacht und es war schmerzhaft, aber ich habe das Drehbuch und die Erinnerung daran verloren. Im Folgenden versuche ich Folgendes zu tun:
Tweak_List = dt_Temp << Get Column Names("String");
for(i = 1, i <= N Items(Tweak_List),i++,
a = Left(Tweak_List[i], Länge(Tweak_List[i]) - 1) || „Δ“;
b = Tweak_List[i];
c = Left(Tweak_List[i], Länge(Tweak_List[i]) - 2);
dt << New Column( Left(Tweak_List[i], Length(Tweak_List[i]) - 1) || "Δ", Numeric, Continuous, Formula( if(:name1 == :name2, c - b, 0 ))));
);
In dt habe ich Spalten mit den Namen ColName_2 und ColName, die Tweak_List ist die Liste der Namen von Spalten wie ColName_2.
Ich muss eine neue Delta-Spalte mit dem Namen ColName_ erstellen. Δ Für jedes Paar und die Formel ColName - ColName_2 darin ist eine Bedingung erfüllt.
Ich erinnere mich, dass ich mit Eval und Co. zusammengearbeitet habe, aber ich habe es vergessen. Bitte hilf mir
Und wie immer hatte ich endlich eine Lösung und konnte sie mit einem effizienteren Skript wiederholen.
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
)
)
)
)
);
);
Sie könnten Word() oder Words() anstelle von Left() verwenden.
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, "_"))))
));
));
);
Wenn Sie nicht die Formel, sondern nur die Werte benötigen, können Sie auch << Set Each Value verwenden, was keine so umfangreiche Auswertung erfordert
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, "_"))
));
);