您可以使用 Or 和多個 contains 語句、Substitute 來取代這些字串並檢查長度或使用正規表示式。以下是替代和正規表示式的範例(替代很可能更快)
Names Default To Here(1);
dt = Open("$DOWNLOADS/sample table.jmp");
dt << select where(Length(:Chart) > Length(Substitute(:Chart, {"Trace thickness", "Trace width", "Insulator thicknes"}, {"", "", ""})));
// dt << select where(!Is Missing(Regex(:Chart, "Trace thickness|Trace width|Insulator thicknes")));
dt_subset = dt << Subset(Selected Rows, Selected Columns Only(0), Output Table("Subset"));
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-780361" slang="en-US" mode="CREATE">回覆:如何使用 contains 進行多個字元選擇和子集?</LINGO-SUB><LINGO-BODY id="lingo-body-780361" slang="en-US" mode="CREATE"><P>它有效,而且效率很高。非常感謝!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-780364" slang="en-US" mode="CREATE">回覆:如何使用 contains 進行多個字元選擇和子集?</LINGO-SUB><LINGO-BODY id="lingo-body-780364" slang="en-US" mode="CREATE"><P>嗨,賈莫,</P><P> </P><P>我對重新編碼還有進一步的問題,我想按圖表重新編碼,當名稱中存在“跡線厚度”字符時過濾所有字符,我需要將它們重新編碼為新名稱“TT”</P><P>我有一個腳本,但有同樣的問題,這不好。您還可以幫忙檢查是否有更好的解決方案嗎?多謝! KR 肖恩</P><PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open( "$DESKTOP/sample table.jmp" );
dt << select where(Length(:Chart) > Length(Substitute(:Chart, {"Trace thickness", "Trace width", "Insulator thicknes"}, {"", "", ""})));
dt_subset = dt << Subset(Selected Rows, Selected Columns Only(0), Output Table("Subset"));
// Recode column: Category
dt = Data Table( "Subset" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Chart );
col1 << Set Name( "Category" );
dt << Move Selected Columns( {col1}, after( dt:Chart ) );
dt << Recode Column(
dt:Chart,
{Map Value(
_rcOrig,
{"B 1B 110um Trace thickness", "TT", "B 2B 18um Trace thickness", "TT",
"B 2F 15um Trace thickness", "TT", "B 2F 24um Trace thickness,DE D", "TT",
"B 2F 32um Trace thickness,SE6", "TT", "B 3B 90um Trace thickness", "TT",
"B 3F 90um Trace thickness", "TT", "B 4B 18um Trace thickness", "TT",
"B 4F 13um Trace thickness,DE B", "TT", "B 4F 15um Trace thickness", "TT",
"B 4F 18um Trace thickness,DE B", "TT", "B 4F 24um Trace thickness,DE C",
"TT", "B 4F 30um Trace thickness,DE C", "TT",
"B 4F 32um Trace thickness,SE6", "TT", "B 4F 35.5um Trace thickness,SE6",
"TT", "B 4F 41um Trace thickness,SE2", "TT",
"B 4F 44.5um Trace thickness,SE2", "TT", "B 5B 90um Trace thickness", "TT",
"B 5F 90um Trace thickness", "TT", "B 6B 18um Trace thickness", "TT",
"B 6F 13.5um Trace thickness,SE5", "TT", "B 6F 14um Trace thickness", "TT",
"B 6F 15um Trace thickness,SE2 L2", "TT", "B 6F 15um Trace thickness,SE5",
"TT", "B 6F 17um Trace thickness,SE4", "TT", "B 6F 18.5um Trace thickness",
"TT", "B 6F 20um Trace thickness,SE3", "TT", "B 6F 20um Trace thickness,SE4",
"TT", "B 6F 41um Trace thickness,SE2 L1", "TT",
"B 6F 44.5um Trace thickness,SE2 L1", "TT", "B 7B 85um Trace thickness",
"TT", "B 7F 14um Trace thickness", "TT", "B 8B 18um Trace thickness", "TT",
"B 8F 14um Trace thickness", "TT", "B 8F 18um Trace thickness,SE1", "TT",
"B 8F 28.5um Trace thickness,DE A", "TT", "B 8F 30.5um Trace thickness,SE5",
"TT", "B 9B 90um Trace thickness", "TT", "B 9F 14um Trace thickness", "TT"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
您可以在重新編碼中使用替換字串


在這種情況下,它似乎甚至能夠創造工作
Local({dt, col1},
dt = Data Table("Subset");
dt << Begin Data Update;
col1 = dt << New Column(dt:Chart);
col1 << Set Name("Chart 2");
dt << Move Selected Columns({col1}, after(dt:Chart));
For Each Row(
dt,
col1[] = If(Contains(dt:Chart, "Trace thickness"),
"TT",
dt:Chart
)
);
dt << End Data Update;
);
如果您願意,可以稍微修改它
Names Default To Here(1);
dt = Open( "$DOWNLOADS/sample table.jmp" );
dt << select where(Length(:Chart) > Length(Substitute(:Chart, {"Trace thickness", "Trace width", "Insulator thicknes"}, {"", "", ""})));
dt_subset = dt << Subset(Selected Rows, Selected Columns Only(0), Output Table("Subset"));
dt_subset << Begin Data Update;
For Each Row(
dt_subset,
:Chart = If(Contains(dt:Chart, "Trace thickness"),
"TT",
dt:Chart
)
);
dt_subset << End Data Update;