楼主: nanmo
6936 6

如何在sas中创建一个分段函数并画图?? [推广有奖]

  • 5关注
  • 8粉丝

讲师

11%

还不是VIP/贵宾

-

威望
0
论坛币
3272 个
通用积分
11.8895
学术水平
15 点
热心指数
16 点
信用等级
6 点
经验
4200 点
帖子
335
精华
0
在线时间
438 小时
注册时间
2007-4-26
最后登录
2024-5-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
9.2不是可以自定义函数了么?看了那个例子还是不懂,求高手指点下,举个简单的例子。。。如,当x<0时,f(x)=1, x>=0时,f(x)=2;
二维码

扫码加我 拉你入群

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

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

关键词:分段函数 自定义函数 高手指点 求高手 自定义 函数 SAS 画图 分段

回帖推荐

Jackywolf_2008 发表于4楼  查看完整内容

如果你想用函数做分段也可以,但是效率不如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.fun ...

本帖被以下文库推荐

沙发
仪坤k 发表于 2009-9-28 12:32:08 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

藤椅
Jackywolf_2008 发表于 2009-9-28 12:45:29 |只看作者 |坛友微信交流群
这个可以不用自定义函数,直接用format就可以分段啦

使用道具

板凳
Jackywolf_2008 发表于 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;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

报纸
losttemple 发表于 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
最恨对我说谎或欺骗我的人

使用道具

7
losttemple 发表于 2009-9-28 21:35:44 |只看作者 |坛友微信交流群
爱萌 发表于 2009-9-28 21:25
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
这个if else写多了会恶心的啊哈哈

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 18:02