如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?我有一個清單
myParaList = {Current_I20_, Voltage_CIB_, Capacitance_DIFF_, Resistance_FURR_};以及一個名為 Parameter 的一列資料表,其中包含多行,其中一些條目為
Current_I20_Stage2
Voltage_CIB_Stage3
Capacitance_DIFF_corner_Stage1
Resistance_FURR__side_Stage3
使用我的列表和包含()將完整參數名稱從資料表中提取到清單中。 如何透過 JSL 執行此操作?
首先,以下內容沒有選擇我的資料表中的任何內容。 我哪裡出錯了?
dt<< select where(Contains(mylist, As column (Parameter)));
自動化和腳本編寫視窗Re: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?嘗試在函數呼叫的右括號後面加上空方括號。
dt<< select where(Contains(mylist, As column (Parameter)[]));
Re: 如何使用 SelectWhere() 和 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: 如何使用 SelectWhere() 和 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: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?@jthi這有效,但似乎不支援資料表中隱藏和排除的行dt 。
我想根據數據表中的另一列排除一些行。 也許這可以在取得行位置 () ?
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: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?您可以將行狀態作為另一個條件納入。
Re: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?@馬克貝利謝謝。 您的意思是使用 Row State 和 Contains 嗎? 我可以舉個例子嗎?
Re: 如何使用 SelectWhere() 和 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: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?@mmarchandTSI非常感謝。 這是可行的,但我更喜歡一種可以按行狀態進行過濾的方法(如@馬克貝利建議)下包含() 。 這將避免任何數據表操作。
Re: 如何使用 SelectWhere() 和 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: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?是的,使用 And() 組合多個條件來匹配目前未隱藏或排除的行的字串。 有完整的解釋和大量的例子這裡。
Re: 如何使用 SelectWhere() 和 Contains() 來尋找資料表中的部分符合項目?@馬克貝利完成後,我沒有收到任何錯誤,但它沒有選擇資料表中的任何內容。