您可以使用 Or 和多个包含语句,使用 Substitute 替换这些字符串并检查长度或使用 Regex。以下是替换和正则表达式的示例(替换可能更快)
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">回复:如何使用包含进行多个字符的选择和子集?</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">回复:如何使用包含进行多个字符的选择和子集?</LINGO-SUB><LINGO-BODY id="lingo-body-780364" slang="en-US" mode="CREATE"><P>嗨,贾莫,</P><P> </P><P>我对重新编码还有进一步的问题,我想按图表重新编码,过滤所有字符,当名称中有“迹线厚度”字符时,我需要将它们重新编码为新名称“TT”</P><P>我有一个脚本,但问题相同,它不太好。你能帮忙检查一下是否有更好的解决方案吗?非常感谢!KRs Sean</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;
您可以使用 Recode 中的替换字符串


在这种情况下,它似乎甚至可以创造工作
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;