全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7365 6
2009-09-28
9.2不是可以自定义函数了么?看了那个例子还是不懂,求高手指点下,举个简单的例子。。。如,当x<0时,f(x)=1, x>=0时,f(x)=2;
二维码

扫码加我 拉你入群

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

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

全部回复
2009-9-28 12:32:08
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

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

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

2009-9-28 12:45:29
这个可以不用自定义函数,直接用format就可以分段啦
二维码

扫码加我 拉你入群

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

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

2009-9-28 13:10:44
如果你想用函数做分段也可以,但是效率不如format,可以参考下面这个例子
proc fcmp outlib = work.func.test;
        function what(startvalue);
                if missing(startValue) then rc=.S;
                else if startValue < 0 then rc=.Z;
                else if startValue < 20 then rc=0;
                else if startValue < 50 then rc=20;
                else if startValue < 100 then rc=50;
                else rc=100;
                return(rc);
        endsub;
run;
options cmplib = work.func;
data a;
do i = -1 to 100 by 10;
        b = what(i);
        output;
end;
run;
二维码

扫码加我 拉你入群

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

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

2009-9-28 21:07:23
写个macro也可以啊
二维码

扫码加我 拉你入群

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

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

2009-9-28 21:25:21
Jackywolf_2008 发表于 2009-9-28 13:10
如果你想用函数做分段也可以,但是效率不如format,可以参考下面这个例子
proc fcmp outlib = work.func.test;
        function what(startvalue);
                if missing(startValue) then rc=.S;
                else if startValue < 0 then rc=.Z;
                else if startValue < 20 then rc=0;
                else if startValue < 50 then rc=20;
                else if startValue < 100 then rc=50;
                else rc=100;
                return(rc);
        endsub;
run;
options cmplib = work.func;
data a;
do i = -1 to 100 by 10;
        b = what(i);
        output;
end;
run;
may be the select when will be more useful here
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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