SAS笔记4——过程步

4.1使用SAS过程步

PROC语句 所有的语句的必须部分为proc+过程名

BY语句 BY语句在过程proc sort中是必须的,它用来对观测值排序。其他过程BY用来对变量进行分别分析

TITLE和FOOTNOTE语句

LABEL语句

4.7使用proc format创建自己的格式

 注意,变量值是字符串时要加上引号,range不止一个值要用逗号隔开,连续的range要用-。关键字low和high可以用来指代变量中的最小和最大的非缺失值。
DATA carsurvey;
   INFILE 'c:\MyRawData\Cars.dat';
   INPUT Age Sex Income Color $;
PROC FORMAT;
   VALUE gender 1 = 'Male'
                2 = 'Female';
   VALUE agegroup 13 -< 20 = 'Teen'
                  20 -< 65 = 'Adult'
                  65 -< HIGH = 'Senior';
   VALUE $ col 'W' = 'Moon White'
               'B' = 'Sky Blue'
               'Y' = 'Sunburst Yellow';
PROC PRINT DATA = carsurvey;
   FORMAT Sex gender. Age agegroup. Color $col.;
   TITLE 'Survey Result Print with User-Defined Formats';
RUN;

4.8定制一个简单的报告

data Candy;
  INPUT Name $ Class DateReturned MMDDYY10. CandyType $ Quantity;
  CARDS;
  Adriana 21 3/21/2000 MP 7
  Nathan 14 3/21/2000 CD 19
  Matthew 14 3/21/2000 CD 14
  Claire 14 3/22/2000 CD 11
  Caitlin 21 3/24/2000 CD 9
  Ian 21 3/24/2000 MP 18
  Chris 14 3/25/2000 CD 6
  Anthony 21 3/25/2000 MP 13
  Stephen 14 3/25/2000 CD 10
  Erika 21 3/25/2000 MP 17
  ;
RUN;

*Write a report with FILE and PUT statement;
DATA _NULL_;
   SET Candy;
   Profit = Quantity * 1.25;
   FILE 'C:\Users\lei\Desktop\Student.rep' PRINT;
   TITLE;

   PUT @5 'Candy sales report for ' Name 'from classroom' Class
     / @5 'Congratulations: You sold ' Quantity 'boxes of candy'
      / @5 'and earnd ' Profit DOLLAR6.2 ' for our field trip.'
      //;
RUN;

DATA _NULL_ 是告诉SAS不要写数据集名,以便程序更快。FILE语句创造了一个输出文件。空标题TITLE语句告诉SAS除去所有的自动标题。指示器@n指定移动到第n行,+n指定移动n行,/移动到下一行(//移动两行),#n跳动到第n行,用@hold保留在当前行?

4.9使用proc means描述数据

具体形式,PROC MEANS ;语句;RUN;

其中,包括,data=数据集;maxdec=指定输出结果小数位数,默认为7位;noprint,禁止结果在output窗口输出;alpha,设置可信区间水平,默认为0.05.

      <stattistics-keywords>:包括MAX,MIN,MEAN,MEDIAN,NMISS,RANGE,STDDEV,SUM。若不加统计关键词默认打印顺序为非缺失值个数(N),均值(MEAN),标准差(STDDEV),最小值(MIN),最大值(MAX)

语句包括,BY variable-list;分变量单独分析,但数据须先按照variable-list的变量顺序排序(proc sort).

                  CLASS variable-list;分变量单独分析,会更集中一些,且不需要排序

                  VAR variable-list;指定分析哪种数值变量,默认则使用所有的数值变量。
DATA sales;
 INPUT CustomerID $ SaleDate MMDDYY10. Petunia SnapDragon Marigold;
 CARDS;
 756-01 05/05/2001 120  80 110
 834-01 05/12/2001  90 160  60
 901-02 05/18/2001  50 100  75
 834-01 06/01/2001  80  60 100
 756-01 06/11/2001 100 160  75
 901-02 06/19/2001  60  60  60
 756-01 06/25/2001  85 110 100
 ;
RUN;
*使用VAR;
data sales;
  set sales;
  Month = MONTH(SaleDate);
PROC SORT DATA=sales;
  By Month;
*Calculate means by Month for flower sales;
PROC MEANS DATA=sales;
  BY month;
  VAR Petunia SnapDragon Marigold;
  TITLE 'Summary of Flower Sales by Month';
RUN;


#example2. from sas base 70;
proc format;
  value agegrp
     low-12 = 'Pre-Teen'
     13-high = 'Teen';
run;
proc means data=sashelp.class;
  var height;
  class sex Age;
  format Age agegrp.;
run;

proc means data=sashelp.class min max mean maxdec=1;
  var height;
  class sex age;
  format age agegrp.;
run;

4.10将描述性统计写入SAS数据集中

PROC SORT DATA = sales;
   by CustomerID;
PROC MEANS NOPRINT DATA = sales;
   By CustomerID;
   VAR Petunia SnapDragon Marigold;
   OUTPUT OUT = totals MEAN(Petunia SnapDragon Marigold) = MeanP MeanS MeanM;
PROC PRINT DATA = totals;
RUN;

4.11使用proc freq为数据计数

   基本形式 PROC FREQ;  TABLES variable-combinations;

   产生一维频率表,只要列出变量名,如TABLES YearsEducation;

   建立两个变量的交叉表需要一个*号,如TABLE Sex*YearsEducation,表示Sex by YearEducation,

   这个语句之后可以用/option的形式添加选项,主要有:List,用list形式打印交叉表(而不是网络);

MISSING,频率统计量中包含缺失值;NOCOL,NOROW,在交叉表中不包含列/行百分比;OUT=data-set输出数据集。

默认计算频数、百分比、累积频数和累积百分比 Proc freq data=learn.survey; Table Gender Ques1-Ques3/nocum; Run; Nocum告诉SAS不要包含两个累积统计量,同理可用NOPERCENT去掉百分比统计量。

用FORMAT 进行分组统计

注意MISSING选项

两者结果不同,有MISSING选项的会单独列出缺失值个数

二维列联表

PROC FREQ data=learn.blood; Tables GenderBloodType; Run;

多重二维表

Tables (A B)(C D);

Tables A * ( B C D);

4.12使用proc tabulate产生一个表格报告

   基本形式,PROC TABULATE;

                    CLASS classification-variable-list;

                    TABLE page-dimension, row-dimension, column-dimension;

转载于:https://my.oschina.net/u/3744769/blog/1604470

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值