Select Where () と Contains () を使用してデータ テーブル内の部分一致を検索するにはどうすればよいですか?リストがあります
myParaList = {Current_I20_, Voltage_CIB_, Capacitance_DIFF_, Resistance_FURR_};そして、Parameter と呼ばれる 1 つの列を持つデータ テーブルと複数の行があり、その一部には次のようなエントリがあります。
Current_I20_Stage2
Voltage_CIB_Stage3
Capacitance_DIFF_corner_Stage1
Resistance_FURR__side_Stage3
使用する私のリストとを含む()データテーブルから完全なパラメータ名をリストに抽出します。 JSL経由でこれを行うにはどうすればよいですか?
まず、以下はデータテーブルで何も選択していません。 私のどこが間違っているのでしょうか?
dt<< select where(Contains(mylist, As column (Parameter)));
自動化とスクリプト作成ウィンドウズRe: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?関数呼び出しの閉じ括弧の後に空の角括弧を追加してみてください。
dt<< select where(Contains(mylist, As column (Parameter)[]));
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?リストで contains を使用する場合は完全一致が必要です。 Word() を使用してデータ テーブルの値をリストと同じ形式にしてから、contains を使用することができます (リストを文字列のリストに変換することもできます)。
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
)
);
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(Contains(my_list, Word([1 2], :param, "_") || "_"));
vals = dt[rows, "param"];
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-710241" slang="en-US" mode="NONE">Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?</LINGO-SUB><LINGO-BODY id="lingo-body-710241" slang="en-US" mode="NONE"><P>部分一致を検索するときに行うことは次のとおりです。</P>
<PRE><CODE class=" language-jsl">dt = New Table( "TestRegex", Add Rows( 8 ),
New Column( "TestCol", Character, "Nominal",
Set Values(
{"Current_I20_Stage2", "xyz", "Capacitance_DIFF_corner_Stage1", "lmnop",
"aaa", "Voltage_CIB_Stage3", "Voltage_CIB_Stage3",
"Resistance_FURR__side_Stage3"}
)
)
);
myList = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
for (i = 1, i <= nitems(mylist), i++,
match_rows = dt << get rows where(! is missing(regex(as column(dt, "TestCol"),
mylist[i], "\0", ignorecase)));
print(match_rows);
);
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?@jthiこれは機能しますが、データテーブル内の非表示および除外された行を考慮していないようです。 dt 。
以下の JSL のように、データテーブルの別の列に基づいて一部の行を除外したいと考えています。 おそらくこれは以内に実行できるでしょう行を取得 () ?
Names Default To Here(1);
clear log ();
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
),
New Column("Group",
Character,
"Nominal",
Set Values(
{"A", "B", "C", "D", "E", "F"}
)
),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where( Contains(ToHideAndExcludeList, :Group) );
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(Contains(my_list, Word([1 2], :param, "_") || "_"));
vals = dt[rows, "param"];
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?別の条件として行の状態を含めることもできます。
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?@Mark_Baileyありがとう。 Contains で Row State を使用するという意味ですか? 例を挙げていただけますか?
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?これは機能するはずです。
Names Default To Here( 1 );
Clear Log();
dt = New Table( "Untitled 2",
Add Rows( 6 ),
Compress File When Saved( 1 ),
New Column( "param",
Character,
"Nominal",
Set Values( {"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1", "Resistance_FURR__side_Stage3", "a", "b"} )
),
New Column( "Group", Character, "Nominal", Set Values( {"A", "B", "C", "D", "E", "F"} ) ),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where( Contains( ToHideAndExcludeList, :Group ) );
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
exrows = dt << Get Excluded Rows;
rows = dt << Get Rows Where( All( Contains( my_list, Word( [1 2], :param, "_" ) || "_" ), Contains( exrows, Row() ) == 0 ) );
vals = dt[rows, "param"];Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?@mmarchandTSIどうもありがとう。 これは機能しますが、行の状態によってフィルターできるアプローチを好みます( @Mark_Bailey提案)以下()が含まれます。 これにより、データ テーブルの操作が回避されます。
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?!Excluded() と !Hidden() を使用することもできますが、この場合 Contains() がおかしなことをしているようですので、その点を管理する必要があります。この場合は All() が機能するようです。
Names Default To Here(1);
Clear Log();
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
),
New Column("Group", Character, "Nominal", Set Values({"A", "B", "C", "D", "E", "F"})),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where(Contains(ToHideAndExcludeList, :Group));
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
dt << Clear Select;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(All(Contains(my_list, Word([1 2], :param, "_") || "_")) & !Excluded() & !Hidden());
vals = dt[rows, "param"];
編集:
または eval expr
rows = dt << Get Rows Where(Eval(EvalExpr((Contains(my_list, Expr(Word([1 2], :param, "_") || "_"))))) & !Excluded() & !Hidden());
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?はい、複数の条件を And() で組み合わせて、現在非表示または除外されていない行の文字列と一致させます。 完全な説明と豊富な例がありますここ。
Re: データテーブル内の部分一致を見つけるために Select Where () と Contains () を使用する方法は?@Mark_Bailey完了しました。エラーは発生しませんが、データ テーブルで何も選択されません。