楼主: liyichen17
10495 4

[问答] 请问:DATA步中IF语句用法 [推广有奖]

  • 4关注
  • 1粉丝

讲师

3%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
1.0166
学术水平
4 点
热心指数
5 点
信用等级
2 点
经验
19465 点
帖子
165
精华
0
在线时间
602 小时
注册时间
2012-2-28
最后登录
2022-12-20

楼主
liyichen17 在职认证  发表于 2012-12-2 21:14:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
if x in ('a001','a002','a003'...'a100') then y='a';
括号里面的a001-a100如何简单的表示出来?
在proc format中,可以用'a001'-'a100'表示,但在IF语句中就不适用。求解!

二维码

扫码加我 拉你入群

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

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

关键词:data步 Data format FORMA form 如何

沙发
pobel 在职认证  发表于 2012-12-3 08:52:50
do _n_=1 to 100;
   if x="a"||put(_n_,z3.) then y="a";
end;
和谐拯救危机

藤椅
pobel 在职认证  发表于 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
;
和谐拯救危机

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

报纸
Bridgenc 发表于 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;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 16:24