2我正在写一个IF语句来过滤掉一些顺序的值。有没有办法编写IF语句来显示顺序值
data H;
input HH $;
cards;
Y1
Y2
Y3
Y4
Y5
; run;
data t;
set H;
if hh in ('Y2' -'Y4');
run;
答案 0 :(得分:1)
您可以利用<
和>
处理字符变量和排序顺序这一事实:
data t;
set H;
if 'Y2' <= hh <= 'Y4';
run;
但是,Y22
也会在Y2
和Y4
之间进行排序。
data H;
input HH $;
cards;
Y1
Y2
Y3
Y4
Y5
Y22
; run;
data t;
set H;
if 'Y2' <= hh <= 'Y4';
run;
因此,在这种情况下你需要添加额外的逻辑。
答案 1 :(得分:1)
使用Scan
功能提取数字部分,然后提交您想要的数字:
if scan(hh,1,'Y') >= 1 & scan(hh,1,'Y') <=4;
New Datastep:
data t;
set H;
if scan(hh,1,'Y') >= 1 & scan(hh,1,'Y') <=4;
run;