楼主: crackman
15198 47

跟crackman读SAS程序(15)--如何将宏变量按照字母顺序排列 [推广有奖]

21
crackman 发表于 2010-8-25 13:27:38

跟crackman读SAS程序(21)--在TABLUATE里面加上百分符号

proc format;                           
   picture mypct low-high='000,009%';   
run;
proc tabulate data=sashelp.class;
   class name sex;
   var weight height;
   table name, sex*(weight height)*(pctsum*f=mypct.);
run;

当我们需要TABLE里面带有我们需要的‘%’的时候,可以用FORMAT里面定义的格式
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

22
crackman 发表于 2010-8-25 13:45:53

跟crackman读SAS程序(22)--format定义输出模板的数字颜色

proc format;
   value color low-2='green'
                 3-5='blue'
              6-high='orange';
run;

proc template;
   define crosstabs Base.Freq.CrossTabFreqs;
      cell_style={foreground=color.};
      row_total_style={foreground=color.};
      col_total_style={foreground=color.};
      grand_total_style={foreground=color.};
   end;
run;

ods listing close;
ods html file='body.html';

proc freq data=sashelp.class;
   tables age*sex / norow nocol nopercent;
run;

ods html close;
ods listing;

这里主要是通过FORMAT来制定TEMPLATE的输出格式和颜色
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 好的意见建议
peijiamei + 4 + 3 很有意思的程序

总评分: 学术水平 + 5  热心指数 + 4  信用等级 + 1   查看全部评分

23
crackman 发表于 2010-8-25 13:56:43

跟crackman读SAS程序(23)-宏中使用IN运算符

options minoperator mlogic;
%macro test(value)/mindelimiter=',';

%if &value in 1,2,3,4,5,6 %then
  %put Value found within list.;
%else %put Value not in list.;

%mend;

%test(3)
上面的程序等价下面的程序
%macro test(value);
  %if &value=1 or &value=2 or &value=3 or &value=4 or
  &value=5 or &value=6 %then %put Value found within list.;
  %else %put Value not in list.;
%mend;
%test(3)
但是明显简洁多了,因为第一个程序用 IN这个运算符
不过要用IN运算付有效,必须在OPTIONS设置一个参数,就是minoperator。同时注意个参数的学习,就是mlogic,这个可以再LOG中显示IF THEN的运行结果以及机制的提示。
这点是SAS9.2里面的新的一个特点
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
tokey001 + 1 + 1 + 1 精彩帖子
hopewell + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

24
rdzr 发表于 2010-8-25 14:06:28
1# crackman
斑竹辛苦,不顶不行!

25
crackman 发表于 2010-8-25 14:06:53

跟crackman读SAS程序(24)-如何查看一个数据集的观测个数

data one;
  input x;
datalines;
1
2
;


%let dsid=%sysfunc(open(one));
%let num=%sysfunc(attrn(&dsid,nlobs));
%let rc=%sysfunc(close(&dsid));

%put There are &num observations in dataset one.;
在这里,学习的几点:
1.在宏中使用函数,除了本身有的宏函数之外,一般都要用%sysfunc
2.在DATA步,我们首先是打开数据集,然后获得该数据集的属性值,观测数、变量数、记录的长度、INDEX等等,详细可以看看函数ATTRN的用法
3.一定要关闭打开的数据集,释放内存空间。

这个程序很值得保留。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

26
rdzr 发表于 2010-8-25 14:08:42
1# crackman
斑竹之SAS功力非我等所能企及,偶等佩服!

27
asteriod 发表于 2010-8-25 14:20:25
经常要用到proc tabulat,学习了!再顺便请教一问题,tabulate里行维和列维的顺序如何自定义,如上面的name变量中,有“张三”、“李四”、“王五”等等,我要自定义一个排序怎么做。如“李四”排第一,“张三”拍第二。我在其他应用程序中,可以方便的自定义这个顺序,不知道在sas能否做到?

28
crackman 发表于 2010-8-25 14:28:04
sort一下 然后By你需要的排序变量 就完了

29
rdzr 发表于 2010-8-25 14:40:23
斑竹,对于数据集,查看观测的个数有多种方法,这个是不是有点 牛刀杀鸡呀?!

30
crackman 发表于 2010-8-25 14:48:02

跟crackman读SAS程序(25)--FREQ中NLEVELS的使用

data color;                                                                                                                          
   input Region Eyes $ Hair $ Count @@;                                                                                             
   label Eyes  ='Eye Color'                                                                                                      
         Hair  ='Hair Color'                                                                                                      
         Region='Geographic Region';                                                                                             
   datalines;                                                                                                                     
   1 blue  fair   23  1 blue  red     7  1 blue  medium 24                                                                              
   1 blue  dark   11  1 green fair   19  1 green red     7                                                                              
   1 green medium 18  1 green dark   14  1 brown fair   34                                                                              
   1 brown red     5  1 brown medium 41  1 brown dark   40                                                                              
   1 brown black   3  2 blue  fair   46  2 blue  red    21                                                                              
   2 blue  medium 44  2 blue  dark   40  2 blue  black   6                                                                              
   2 green fair   50  2 green red    31  2 green medium 37                                                                              
   2 green dark   23  2 brown fair   56  2 brown red    42                                                                              
   2 brown medium 53  2 brown dark   54  2 brown black  13                                                                              
   ;
run;                                                                                                                                 
                                                                                                                                       
proc freq data=color nlevels;                                                                                                         
   tables region eyes hair ;                                                                                                               
run;                                                                                                                                    
        

看看见过就知道了:
                                                         SAS 系统              
                                                      FREQ PROCEDURE
                                                       变量水平数
                                         变量      标签                     水平
                                         ---------------------------------------
                                         Region    Geographic Region           2
                                         Eyes      Eye Color                   3
                                         Hair      Hair Color                  5


                                                    Geographic Region
                                                                      累积       累积
                                   Region      频数      百分比       频数      百分比
                                   ---------------------------------------------------
                                        1          13     48.15           13     48.15
                                        2          14     51.85           27    100.00

                                                        Eye Color
                                                                      累积       累积
                                    Eyes       频数      百分比       频数      百分比
                                    --------------------------------------------------
                                    blue            9     33.33            9     33.33
                                    brown          10     37.04           19     70.37
                                    green           8     29.63           27    100.00

                                                       Hair Color
                                                                      累积       累积
                                   Hair        频数      百分比       频数      百分比
                                   ---------------------------------------------------
                                   black            3     11.11            3     11.11
                                   dark             6     22.22            9     33.33
                                   fair             6     22.22           15     55.56
                                   medium           6     22.22           21     77.78
                                   red              6     22.22           27    100.00

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

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