如何根据多个条件选择行?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我正在编写一个脚本来对数据表进行子集化。 按照脚本指南的编码示例,我可以根据标准进行选择:
对于每一行(选定(Rowstate())=(名称==“KATIE”));
我如何概括这一点以选择 KATIE 和 LOUISE?
这不起作用:
对于每一行(Selected(Rowstate())=(name=="KATIE","LOUISE"));
那么这个的语法是什么呢?
问候
波尔
回复:如何根据多个条件选择行?谢谢,
我过去常常将每个条件子集到一个单独的表中,然后将它们组合起来。
新年快乐 !回复:如何根据多个条件选择行?这是您想要完成的任务吗?找到在名为“name_list”的列表中找到的所有匹配项,然后将它们输出到子集数据表中?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
name_list = {"Clay", "Alice", "AMY"};
For( i = 1, i <= N Items( name_list ), i++,
i_name = Uppercase( name_list[i] );
dt << select where( :name == i_name, current selection( "extend" ) );
);
dtSub = dt << subset( selected rows( 1 ), selected columns( 0 ) );回复:如何根据多个条件选择行?嗨女士,
谢谢你的剧本。
我想知道是否有办法动态处理姓名列表,并且仍然能够对
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
name_list={"clay","Alice","AMY", ...};
for(i=1,i<=nitems(name_list),i++,
i_name=name_list[i];
dt<<选择其中(名称=i_name)
);
dt<<子集;
回复:如何根据多个条件选择行?这种语法可能更具可读性。您可以使用竖线表示 OR,使用 & 符号表示 AND:
dt =打开( “$sample_data\Big Class.jmp” ) ;
dt <<选择地点((包含( :姓名, “一个领带” ) |包含( :姓名, “奥伯” ))
&包含( :性别, “F” )) ;
回复:如何根据多个条件选择行?差不多了。 And() 必须包含两个参数;为了使 And() 为真,它的两个参数都必须为真。
这应该有效:
对于每一行(已选择(行状态() ) =和(或者(包含( :姓名, “一个领带” ) ,包含( :姓名, “奥伯” )) ,包含( :性别, “F” ))) ;
回复:如何根据多个条件选择行?嗨,这些答案非常有帮助。 现在,如果我想在另一列中添加值条件,假设我想选择 name="KATIE" 和 "ROBERT"(或者更好,包含“ATIE”)和 sex="F"。 然后我必须将 Or- 条件与 and 条件结合起来。
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
对于每一行(已选择(行状态() ) =或者(包含( :姓名, “一个领带” ) ,包含( :姓名, “奥伯” ))并且(包含(:性别,“F” ))) ;
我已经做过类似的事情,但没有成功。
问候
波尔
(PS 显然我经常使用 Base SAS。 现在我尝试以这种方式在表上实现选择。 谢谢您的帮助。)
回复:如何根据多个条件选择行?如果有许多字符串需要匹配,则很容易使用 list 而不是构造长 OR() 子句。 但是,Contain() 不能不在(字符串)列表中查找子字符串。 然后需要对列表进行循环。 这是一个例子:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
名单= { “一个领带” , “伊势” , “克莱” , “万维网” } ;
n = N 项(名单) ;
对于每一行(
为了(我= 1 ,我<= n ,我++,
如果( ( s_标志=包含( :姓名[] ,名单[我] )) > 0 ,
休息()
)
) ;
已选择(行状态() ) = s_标志;
) ;
回复:如何根据多个条件选择行?同样的原理:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
对于每一行(已选择(行状态() ) =或者(包含( :姓名, “一个领带” ) ,包含( :姓名, “伊势” )) ) ;
// 或者也可以
dt <<选择地点(或者(包含( :姓名, “一个领带” ) ,包含( :姓名, “伊势” )) ) ;
回复:如何根据多个条件选择行?但是,如果我想进一步使用“Contains”来匹配部分字符串中的字符串怎么办? 喜欢“ATIE”和“ISE”? 问候波尔
回复:如何根据多个条件选择行?使用 Or():
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
对于每一行(已选择(行状态() ) =或者(姓名== “凯蒂” ,姓名== “路易丝” ) ) ;
// 或者也可以
dt <<选择地点(或者(姓名== “凯蒂” ,姓名== “路易丝” ) ) ;