こんにちは。テスト列を構築したいと考えています。

次のスクリプトから:
dt11 = current data table();<BR />
// Choisir colonnes commençant par employes
dur_cols = Filter Each( {col_name}, dt11 << Get Column Names( "String", Nominal ),
Starts With( col_name, "employes " )
);
// Nouvelle colonne
dt11 << New Column( "TEST EMPLOYES", Numeric, "Continuous", Format( "Best", 12 ) );
// Modifier la formule de colonne : TEST EMPLOYES
dt11:TEST EMPLOYES <<
Set Formula(
For( i = 1, i < n items(dur_cols), i++,
If(
(dur_cols[i] == dur_cols[i+1] | Is Missing( dur_cols[i+1] )),
:TEST EMPLOYES = 1
,
:TEST EMPLOYES = 0
)
)
);目標は、if ループの条件に応じて、 従業員のテスト列に 0 または 1 を入れることです...現時点では、値 0 または 1 を持つテスト従業員列を作成することはできません。
助けてくれてありがとう
従業員列から始めます。この列には、「611 - 2000 - 300」などの複数のフィールドが入力されており、3 つ以上のフィールドが入力されている場合があります。
私のスクリプトでは、この列を「-」区切り文字で分割しているので、最初の「employe」列のフィールドと同じ数の「employe...」列があります。
条件 TEST EMPLOYE = 1 :
作成されたすべての従業員列は等しいか、値が欠落しています
条件 TEST EMPLOYE = 0 :
従業員列に異なるデータが作成されました (列が空の場合は考慮されません)
例1:
従業員列 1:300
従業員列2: 300
従業員列3: 500
テスト従業員 = 0
例2:
従業員列 1:300
従業員列2: 300
従業員列3:
テスト従業員 = 1
元の列から計算する方がおそらく簡単でしょう
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("Column",
Character,
"Nominal",
Set Values({"1-1-3", "2-2-2", "3-3", ""})
),
New Column("Column 1", Character, "Nominal", Set Values({"1", "2", "3", ""})),
New Column("Column 2", Character, "Nominal", Set Values({"1", "2", "3", ""})),
New Column("Column 3", Character, "Nominal", Set Values({"3", "2", "", ""}))
);
dt << New Column("R", Numeric, Nominal, Formula(
res = Associative Array(Words(:Column , "-")) << get keys;
Remove From(res, Contains(res, "")); // remove missing value
N Items(res) == 1;
));

完全に欠落している行をどのように考慮するべきかは不明ですが、この場合は 0 として扱われますが、最終的な比較を変更して 1 に変更することができます。