楼主: chi4zb
7063 5

利用data 步怎样实现开区间的Format (大于小于等于)? [推广有奖]

  • 0关注
  • 0粉丝

大专生

60%

还不是VIP/贵宾

-

威望
0
论坛币
381 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
587 点
帖子
61
精华
0
在线时间
48 小时
注册时间
2012-3-15
最后登录
2020-1-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
利用data 步怎样实现开区间的Format (大于小等于)?


比如Format 目标:
0-<3 =0%
3=3%
3<-6=4%
6<-<8=6~8%





只会写以下这种包含区间段两端的程序,请教各位实现以上目标怎么改?谢谢!
(只是一个示例,实际情况是非常长的一个Format表格,需要读取外部的excel配置表格,手写proc format是不现实的,所以请教怎样编写一个可配置的程序??)

/*---------------------------
以下程序等于
0-3 =0%
4-6=3%
7-8=6%
---------------------------*/



data scale;
input begin: 8. Last: 8. amount: $char2.;
datalines;
0 3 0%
4 6 3%
7 8 6%
;
data test;
length label $ 11;
set scale(rename=(begin=start Last=end amount=label)) end=last;
retain fmtname *PercentageFormat* type *n*;
output;
run;


proc format cntlin=test;run;





二维码

扫码加我 拉你入群

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

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

关键词:format FORMA form Data ORM amount ERROR start 程序

本帖被以下文库推荐

沙发
mingfeng07 学生认证  发表于 2014-11-14 13:32:10 |只看作者 |坛友微信交流群
  1. proc format;
  2. value fmt 0-<3='0%'
  3.            3='3%'
  4.            3<-6='4%'
  5.            6<-<8='6~8%';
  6. run;
复制代码

使用道具

藤椅
chi4zb 发表于 2014-11-14 13:43:50 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-11-14 13:32
谢谢。

上面只是一个示例,实际情况是非常长的一个Format表格,需要读取外部的excel,手写proc format是不现实的,所以请教怎样编写一个可配置的程序??

使用道具

板凳
fxtxzyl 发表于 2014-11-14 17:04:29 |只看作者 |坛友微信交流群
先导入excel数据到一个数据集a中,例如你的下界变量为var1  上界变量为var2  目标格式为 var3
  1. data b(keep=fmtname start end label);
  2.   set a;
  3.   retain fmtname '$form';
  4.   rename var1=start var2=end var3=label;
  5. run;
复制代码






使用道具

报纸
chi4zb 发表于 2014-11-14 18:28:57 |只看作者 |坛友微信交流群
fxtxzyl 发表于 2014-11-14 17:04
先导入excel数据到一个数据集a中,例如你的下界变量为var1  上界变量为var2  目标格式为 var3
谢谢,

请问 这种形式下 怎样实现开闭区间?

比如 (var1, var2]  即 var1<x<=var2  这种形式??

使用道具

地板
bobguy 发表于 2014-11-15 00:35:21 |只看作者 |坛友微信交流群
You can manipulate the values of these two variable to include or exclude starting / ending values.   

sexcl='N';   ***include start value;
eexcl='Y';   ***exclue end value;
*****************************************************;
data scale;
retain fmtname 'mypct';
infile cards eof=eof;
input start: $8. end: $8. label: $char5.;

sexcl='N';   ***include start value;
eexcl='N';   ***exclue end value;

return;
eof:
start='OTHER';
label='M';
datalines;
0 3 0%
4 6 3%
7 8 6%
;

proc format cntlin=scale;
run;

data test;
   do i=-1 to 9;
      x=put(i,mypct.);
      output;
        end;
run;

proc print;run;

使用道具

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

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

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

GMT+8, 2024-4-27 02:32