Sas常用过程

来源:互联网 发布:无声告白 知乎 编辑:程序博客网 时间:2024/05/29 09:41

1 sort过程

例子:

DATA SCORE;

INPUT NUM $ S1-S3 @@;

CLAS=SUBSTR(num,3,2);/* SUBSTR函数从NUM中截取出班级CLAS */

TOT=SUM(OFS1-S3);

CARDS;

060101 79 9687 060102 69 78 92

060203 98 8793 060104 88 93 90

060201 76 8988 060207 90 89 97

;

proc print;

run;

PROC SORT DATA= SCOREOUT=CS1;

BY CLAS descending TOT;

PROC PRINT;

RUN;

 

Out输出数据集

By通过什么排序 【descending】 字段 descendingTOT按照tot倒序,不写表示默认方式,正序

 

 

2 print过程:

 例子:

DATA ear_exp;

INPUT name $ reg $ wor $ earn exp @@;

CARDS;

LILING A 15500 4700 LIUHONG B 2 4600 4000

SUNPING B 25300 4800 ZHANGLI A 1 5300 4500

ZHAOGONG A 15600 4600 XIWANG B 1 8500 7400

WEIDONG A 15500 4500 ZHAOJUN A 2 4500 4000

WANGJIAN B 19800 8300 LIUYAN A 2 3500 3300

HUANGHUA A 23800 3500 ZHOULI A 2 3900 3700

QINWEI B 24900 4400 DONGYI B 1 15000 9000

ZHANGSAN B 110500 8800 WANGZI B 2 4900 4500

liujun A 18900 7790 DONGFENG B 1 11000 8090

FENGJUN A 18980 7720 KONGHAI A 1 12000 9000

PROC SORT ;

BY reg wor;

PROC PRINT ;

ID NAME;

BY reg wor;

SUM earn exp;

RUN;

 

PROC PRINT<选项>;

VAR 变量表

ID 变量表;

BY 变量表;

SUM 变量表;

 

3format过程

DATA score;

LENGTH name $ 12;

INPUT name t1-t3 @@;

CARDS;

WANGDONG 9070 60 XUEPING 85 95 88 ZHOUHUA 77 84 69

HEYAN 95 7888 SUNHONG 89 97 87 ZHAOBIN 66 98 86

;

PROC FORMAT (Library=l);

VALUE fsmt low-<60='C'60-<80='B'80-100='A';

PROC PRINT DATA= score;

FORMAT t1-t3 fsmt.;

run;

 

 

 

Library=选项指定逻辑库,用于保存格式 ,如果不写表示临时工作目录

Value语句用于定义格式  value格式名 格式内容

 

4 means过程

 

例子

PROC means data= mydb.score1maxdec=3;

var t1-t3;

class clas;

title 'statistics with a class variable';

Proc sort data= mydb.score1;

by clas;

PROC means maxdec=3;

by clas;

var t1-t3;

Title 'statistics with by variable';

run;

 

MEANS过程

选项

DATA=数据集,指出要分析的数据集

NOPRINT,不输出任何统计量,仅为建立一个新的数据集

MAXDEC=n,指出小数点位数

语句

VAR 变量表; 指出要分析的变量表

BY 变量表; 聚组统计

ID 变量表;

其他统计量过程。

例如

缺省

变量

N

均值

标准差

最小值

最大值

 

例如求最小值

 

data test;

input clas t1-t3 @@;

cards;

1 100 100100 1 90 98 90

1 91 98 98 289 100 98

2 100 98 972 97 86 99

;

proc means maxdec=3 ;

by clas;

run;

 

by需要先排序

class不需要先排序

都是分组

 

Weight权重

Fre观测行频率

 

 

 

5FREQ过程

频率统计过程

例子:

 

data b;/*读入数据*/

 

input num $ t1-t3;

v=MEAN(OFt1-t3);

cards;

020221 76 9890

020122 65 5687

020221 35 7998

020223 85 7799

020126 87 7990

020127 57 5860

020227 77 9798

020228 61 5949

020129 77 6787

020331 88 9790

010131 69 9080

010230 72 5980

020232 66 7778

020136 67 7987

020138 90 7579

;

 

PROC FORMAT ;/*产生成绩等级的格式*/

VALUE vfmt LOW-<60='C'

60-<80='B'

80-HIGH='A';

PROC FREQ data=b; /*对成绩各等级频数分析*/

FORMAT v vfmt.;

TABLES v;

run;

二维表

PROC FREQ DATA=ep.ear_exp;

TABLES reg*wor;

RUN;

N维

*链接

 

data b;/*读入数据*/

 

input num $ t1-t3;

v=MEAN(OFt1-t3);

cards;

020221 76 9890

020122 65 5687

020221 35 7998

020223 85 7799

020126 87 7990

020127 57 5860

020227 77 9798

020228 61 5949

020129 77 6787

020331 88 9790

010131 69 9080

010230 72 5980

020232 66 7778

020136 67 7987

020138 90 7579

;

 

PROC FORMAT ;/*产生成绩等级的格式*/

VALUE vfmt LOW-<60='C'

60-<80='B'

80-HIGH='A';

PROC FREQ data=b; /*对成绩各等级频数分析*/

FORMAT v t1-t3 vfmt. ;

TABLES t1*t2*t3;

run;

 

最后一个变量是列,倒数第二是行,其他是层

6TABULATE过程

制表过程

例子

data test;

input a b @@;

cards;

1 1 2 1 2 21 3 2 3 2 1 1 2 2 1 1 3 2 3

;

proc tabulate;

class a b;

table a*b;

run;

 

2个都是列方向维度,a是控制维度,b子维度

 

table b*a;

控制维度,子维度变化

 

table b a;

分别从b,a统计

Class分类变量

Var分析变量

统计量

 

 

7UNIVARIATE过程

 

单变量统计过程

计算常用统计量,画图,频数表,正态性检验

 

例子:

data blood;

 

input number calcium phosphrs glucose @@;

/* number='identification number'

calcium='calcium mg percent'

phosphrs='inorganicphosphorus mg percent'

glucose='glucosemg percent' */

cards;

15   10.7 4.1 136    63  10.7 3.3 325   239 10.4  4.9 103   477  10.1 4.1 91  

263  11.1 4.2 100   480   9.9 3.5 92     16 10.3  4.6  98    64  10.0 3.5 95  

22   10.0 3.6  85    77 10.5  4.  100  266  9.7  4.4 100   494  10.1 2.4 96   

39    8.8 2.7  90    97 10.0  4.5  97  307 10.0  4.1  117  520   9.8 3.3  80  

338  10.4 3.5  93   523  9.0  3.7  87   44 10.5  4.5  160  132   9.5 3.7 105  

46   10.0 3.0  95   152  9.8  3.8 100   383 10.6 5.1   91   541 10.8 4.1 120

48    9.9 2.7  90   156  9.7  3.2  90  408  9.5  4.3 135   544   9.1 3.7 111  

416   9.8 4.1 105   554   9.4 3.4 132    51  9.9 4.1  100   164  9.6 3.3 155  

56    9.7 3.1 110   216  10.7 5.3 117   420 10.2  3.0  97   561   9.9 3.8 102  

57   10.6 4.4 138   221  10.6 4.6 110   441  9.9 3.9   98   575 10.7 3.9 100

457  10.0 4.2  95   629 10.2  3.7 104    59 9.4  3.5   95  225   9.5 4.5  95 

61   10.1 4.0  97   234 10.4  4.3 100   473 10.0 4.0   93   644 10.0 3.6 110

;

PROC UNIVARIATE DATA= BLOODPLOT NORMAL FREQ;

VAR PHOSPHRS;

RUN;

 

结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8线性回归REG

Proc reg<选择项>

Var 变量表

By 变量表

Freq 变量表

Weight变量表

Add

Delete

Model 因变量=自变量表 </选择项>

Test

Mtest

 

 

 

例子:

    DATAreg1;

       INPUT xy @@;

    CARDS;

    820 165 780 158 720 130 867 180 690 134

    787 167 934 186 679 145 639 120 820 158

    PROCCORR;

       VAR x y;

    RUN;   

PROC REG;

       MODEL  y=x;

    RUN;

PROC REG data=reg1;

       MODELy=x/NOINT;

RUN;

data reg2;

input x@@;

y=x*0.19974;

cards;

1000 900

;

data reg1;

set reg2 reg1;

run;

PROC REG data=reg1;

       MODELy=x/NOINTr cli clm;

RUN;

 

 

GLM过程

DATA reg1;

   INPUT x y @@;

CARDS;

820 165 780158 720 130 867 180 690 134

787 167 934186 679 145 639 120 820 158

;

 proc GLM data=reg1;

 model y=x/noint;

 run;

 

 

 

 

 

9 逐步选择法STEPWISE

Proc stepwise

 前进法f

    MODEL  oxy=age weight runpulse maxpulse rstpulseruntime/forward  ;

后退法 b

MODEL  oxy=age weight runpulse maxpulse rstpulseruntime/backward  

;

逐步回归法:前进法修正

Stepwise

 

最大全相关系数平方改进法

Maxr:

最小全相关系数平方改进法

minR

适用范围:多元线性回归,自变量选择

 

 

 

10指数曲线拟合NLIN过程

使用场景:

11 logistic回归

模型:

向前选择法,

向后剔除法

逐步选择法

最优子集法

Section=模型

Proc logistic<选项>

By

Class

Freq

Model 因变量=自变量表</选项>

Test

Weight

Output out=…

 

12主成分分析

例子

data tmp131;

input x1 x2 x4 x3@@;

cards;

40 2 5 20 40 1 19 40

10 1.5 5 30 270 4 13 60

120 3 13 50 280 3.5 11 60

250 4.5 18 0 170 3 9 60

180 3.5 14 40 220 2.5 14 30

130 2 30 50 140 2 20 20

220 1.5 17 20 220 2 14 10

160 1.5 35 60 40 1 10 0

120 3.5 9 50 20 1 12 60

10 1.5 12 50 120 2 20 0

;

proc princomp data=tmp131 out=tmp1outstat=liv2 prefix=pre standard cov;

proc corr data=tmp1;

var x1-x4;

with pre1-pre4;

 

run;

13 factor 因子分析

例子:

data l137;

input   +1x1-x10;

cards;

1 947.0023.40 14.80 45.30 0.46 85.20 373.00 9.54 0.37 3.88

2 935.0023.20 16.20 41.70 0.40 83.30 305.00 7.90 0.38 4.81

3 918.2020.90 14.80 43.30 0.38 82.60 320.00 9.51 0.43 4.52

4 910.7023.40 16.10 44.00 0.46 85.20 338.00 8.60 0.33 3.84

5 905.0022.90 17.00 39.80 0.45 80.40 348.00 9.53 0.42 4.40

6 892.6022.30 15.70 44.00 0.41 85.40 286.00 8.67 0.39 4.50

7 853.4020.90 15.90 41.60 0.35 85.40 273.00 9.79 0.42 4.29

8 837.8020.20 14.40 37.30 0.33 82.50 326.00 7.62 0.36 4.73

9 833.3022.20 15.20 38.30 0.37 82.20 310.00 7.84 0.40 5.10

10 760.3020.40 15.50 40.70 0.32 84.20 268.00 7.75 0.35 4.52

;

proc factor simple corr  data=l137 ;

var x1-x10;

run;

proc factor   PRIORS=SMCMSA SCREE RESIDUAL PREPLOT NFACTORS=4

    ROTATE=PROMAXREORDER PLOT

;

 

run;

 

原创粉丝点击