楼主: nanmo
7388 6

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

  • 5关注
  • 8粉丝

已卖:638份资源

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
3148 个
通用积分
9.0428
学术水平
15 点
热心指数
16 点
信用等级
6 点
经验
4206 点
帖子
337
精华
0
在线时间
450 小时
注册时间
2007-4-26
最后登录
2025-12-2

楼主
nanmo 发表于 2009-9-28 12:13:29 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-6 07:57