皆さんこんにちは、
別のテーブルから作成したさまざまなデータテーブルがあります。各データテーブルには、同じ列名の文字形式の可変長の文字列が含まれています。 以下にいくつかの例を追加しました。 文字列の最後の4文字を列から削除し、それ以外はすべて保持しようとしています。 最後の4文字は常に「DATA」です。 異なるデータテーブルをリンクし、Left()とContains()を使用してifステートメントを実行しようとしましたが、記述方法が間違っていると思います。 jmp jslを学び始めたばかりなので、このコミュニティで誰かに助けてもらえるといいのですが。
元:
データ表1
ソース
FARAH_DATA
FARAH_DATA
FARAH_DATA
FARAH_DATA
データ表2
ソース
MIKE_DATA
MIKE_DATA
MIKE_DATA
これは、各データテーブルがどのように見えるかを示しています。
データ表1
ソース
ファラ
ファラ
ファラ
ファラ
データ表2
ソース
マイク
マイク
マイク
jslを以下のように添付しました
dtList = {};
For( i = 1, i <= N Table(), i++,
tempdt = data table(i)<<GET name=""></GET>これを処理する多くの方法。 文字列から_DATAを削除する方法の例
Names Default To Here(1);<BR /><BR />str = "FARAH_DATA";
//Word
Show(Word(1, str, "_"));
//Contains and left/substr
Show(Substr(str, 1, Contains(str, "_", -1) - 1));
Show(Left(str, Contains(str, "_", -1) - 1));
//Substitute
Show(Substitute(str, "_DATA", ""));
//Regex
Show(Regex(str, "_DATA", "", GLOBALREPLACE));
Show(Regex(str, "^(.*?)(_DATA)", "\1"));
データテーブルでの使用:
Names Default To Here(1)
dt1 = New Table("Untitled",
Add Rows(4),
New Column("Source",
Character,
"Nominal",
Set Values({"FARAH_DATA", "FARAH_DATA", "FARAH_DATA", "FARAH_DATA"})
)
);
dt2 = New Table("Untitled 2",
Add Rows(3),
New Column("Source",
Character,
"Nominal",
Set Values({"MIKE_DATA", "MIKE_DATA", "MIKE_DATA"})
)
);
dt_list = {dt1, dt2};
//using contains with left
//JMP16, if previous use For-loop
For Each({cur_dt}, dt_list,
Column(cur_dt, "Source") << Set Each Value(Left(:Source, Contains(:Source, "_", -1) - 1));
);