全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10454 4
2012-12-02
if x in ('a001','a002','a003'...'a100') then y='a';
括号里面的a001-a100如何简单的表示出来?
在proc format中,可以用'a001'-'a100'表示,但在IF语句中就不适用。求解!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-12-3 08:52:50
do _n_=1 to 100;
   if x="a"||put(_n_,z3.) then y="a";
end;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-3 08:58:31
关于format还有一点,'a001'-'a100'并不只表示if语句中的那列值,它表示的是按照字符的顺序排序位于'a001'或之后,而且位于'a100'或之前的任意字符串。

proc format;
   value $tmp "a001"-"a100"="a";
run;

data test;
    input x :$20.;
        y=put(x,$tmp.);
        put x= y=;
        cards;
a001
a0HAHAHAHA
a0whatever
a00whatever
;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-3 10:10:48
pobel 发表于 2012-12-3 08:58
关于format还有一点,'a001'-'a100'并不只表示if语句中的那列值,它表示的是按照字符的顺序排序位于'a001'或 ...
哦 我明白了 谢谢你!~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-3 11:51:31
You can try this as well:

data test;
do _n_=1 to 600;
    x="a"||put(_n_,z3.);
        output;
end;
run;

data test2;
set test;
Pattern = "/a00?|a100/i"; * Define PRX *;
PRX = prxparse(Pattern); * Compile PRX *;
Match_Result = prxmatch(PRX,x); * Search for PRX *;
if Match_Result eq 1;
drop PRX Match_Result Pattern;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群