p***a 发帖数: 78 | 4 假设有一个dataset,column name 是dx1-dx30, sx1-sx30, zx1-zx20, xx1-xx20, 在
这么多列中,筛选。
比如:
dx1-dx30中,每一列要包括有如下代码:J41, J42, J43, J44, J47, J100**, J110**,
J12-J16**, J18**, J20**, J21**, J22**
只有在zx1出现W, X, Y的时候, sx1-sx20中才能包括: E100, E101, E1063, E1064,
E109, E110, E111, E1163, E1164, E119, E130, E131, E1363, E1364, E139, E140,
E141, E1463, E1464, E149
如此类似的,还有很多。。。总之要筛选的东西很多,列之间的条件也比较多。
这种多个列,筛选条件复杂的情况下,如何通过用loop 之类的实现? 或者有更简单的
方法? 用宏? 如果直接硬来,太累了,肯定有更巧妙的方法。请详细,或写出代码。
谢谢。
谢谢。给出合理答案的前两名,每人3个包子!! |
|
s******8 发帖数: 102 | 5 你的条件不充分,比如 zx1 不出现W, X, Y的时候, 咋办?zx1出现W, X, Y 但sx1-
sx20 不出现所列的值时咋办?
假设:DX1-DX30 只可以出现所列值,任何一个不成立则删除该记录。
假设:SX1-SX20 任何一个出现所列值 但ZX1不是 X Y Z 则删除。我就不用引号了,大
家都明白就可。
data filtered;
set yourdata;
array dx(30) dx1-dx30;
array sx(30) sx1-sx30;
flag=0;
do i=1 to 30;
if substr(dx(I),1,3) not in ('J41' 'J42' 'J43' 'J44' 'J47'
'J12''J13' 'J14' 'J15' 'J16' 'J18' 'J20' 'J21' 'J22') and substr(dx(i),1,4)
not in ('J100' 'J110') then flag_dx=1;
end;
if flag=0;
if zx1 not in ('X' 'Y' 'Z') then do i=1 to 20;
if s... 阅读全帖 |
|