注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

公卫人

博学而笃志 切问而近思

 
 
 

日志

 
 

Freq 过程介绍 分组统计  

2014-03-12 10:02:45|  分类: 统计分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Freq过程介绍

 

原文地址:http://www2.sas.com/proceedings/sugi31/252-31.pdf

转载请注明出处: http://blog.sina.com.cn/s/blog_5d3b177c0100b68k.html

原文没有提供数据,所以就在网上随便找了个数据进行测试,地址如下:http://www.sasenterpriseminer.com/data/htwt.xls

该数据包含4个变量(性别sex,年龄age,身高height,体重weight),共237个观测。

 

1 Freq 语法

proc freq <options> ; 

by variables ; 

exact statistic-options < / computation-options> ; 

output <OUT= dataset> options ; 

tables requests < /options> ; 

test options ;   

weight variable ; 

 

 

2 如果直接运行freq过程步,程序如下,它将会对所有的变量进行操作。

proc freq data=Htwt;

run;

部分结果:

FREQ 过程

sex

sex      频数      百分比     累积频数 累积百分比

------------------------------------------------------------------------------

          111     46.84          111     46.84

          126     53.16          237    100.00

 

3 tables:得到给定变量的频数统计,或多变量的交叉表频数统计。

proc freq data=Htwt;

tables sex;

run;

结果如上。

 

4 format:对连续数值变量做Freq时,系统会对每个数值进行频数统计,这个结果一般不是我们所需要的。我们一般会将连续变量转换为离散变量,这个可以通过Format过程步来实现。

proc format;

value height_ctg    0-50   = '<50'

   50-60 = '50-60'

   60-high   = '>60';

value weight_ctg     0-90    = '<90'

   90-110 = '90-110'

   110-high     = '>110';

 run;

 

proc freq data=Htwt;

tables weight*height;

format weight weight_ctg.;

format height height_ctg.;

run;

结果:

FREQ 过程

 

weight * height 表

weight(weight)     height(height)

 

频数    |

百分比  |

行百分比|

列百分比|50-60   |>60     |   合计

--------+--------+--------+

<90     |     61 |     13 |     74

        |  25.74 |   5.49 |  31.22

   |  82.43 |  17.57 |

        |  67.78 |   8.84 |

--------+--------+--------+

90-110  |     24 |     54 |     78

        |  10.13 |  22.78 |  32.91

        |  30.77 |  69.23 |

        |  26.67 |  36.73 |

--------+--------+--------+

>110    |      5 |     80 |     85

        |   2.11 |  33.76 |  35.86

       |   5.88 |  94.12 |

    |   5.56 |  54.42 |

--------+--------+--------+

合计          90      147      237

37.97    62.03   100.00

 

5 norow nocol nopercent:有时我们只需要频数,不需要各行各列的百分比,我们就可以在tables后面加上这些参数。

 

proc freq data=Htwt;

tables weight*height/norow nocol nopercent;

format weight weight_ctg.;

format height height_ctg.;

run;

 

结果:

FREQ 过程

weight * height 表

weight(weight)     height(height)

 

频数    |50-60   |>60     |   合计

--------+--------+--------+

<90     |     61 |     13 |     74

--------+--------+--------+

90-110  |     24 |     54 |     78

--------+--------+--------+

>110    |      5 |     80 |     85

合计          90      147      237

 

Norow:不要行的百分比

Nocol:不要列的百分比

Nopercent:不要频数的百分比

Nocum:单变量时不要累积频数和累积百分比

Nofreq:不要频数

Noprint:不打印

Nowarn:不输出警告信息

Missing:将缺失值也进行统计

 

6 对变量加label标识,使输出更直观

proc freq data=Htwt;

tables weight*height/norow nocol nopercent;

format weight weight_ctg.;

format height height_ctg.;

label weight = '高度';

label height = '重量';

run;

结果:

FREQ 过程

weight * height 表

 

weight(高度)     height(重量)

频数    |50-60   |>60     |   合计

--------+--------+--------+

<90     |     61 |     13 |     74

--------+--------+--------+

90-110  |     24 |     54 |     78

--------+--------+--------+

>110    |      5 |     80 |     85

合计          90      147      237

 

7 By:对这个变量的值进行分页显示

proc freq data=Htwt;

tables weight/norow nocol nopercent;

format weight weight_ctg.;

by sex;

run;

结果(以第一页为例)

----------------- sex=m ------------

 FREQ 过程

 weight

 

 weight      频数        累积频数

 ------------------------------

 <90             38          38

 90-110          35          73

 >110            53         126

 

8 out:输出数据集

proc freq data=Htwt;

tables weight/ out=htwtfreq;

format weight weight_ctg.;

run;

proc print data= htwtfreq;

run;

结果:

Obs    weight    COUNT    PERCENT

 

    <90         74     31.2236

    90-110      78     32.9114

    >110        85     35.8650

 

9 order选项:使输出按指定的order方式排序。

Order=data :按输入数据集的顺序排序

Order=formatted :按其formatted value排序

Order=freq :按计算的频数的降序排序

Order=internal :按其unformatted value排序

 

data htwttmp;

set htwt;

weight=round(weight);

run;

 

proc freq data=Htwttmp order=freq;

tables weight/ out=htwtfreq ;

run;

 

proc print data= htwtfreq(obs=10);

run;

结果:

Obs    weight    COUNT    PERCENT

 

      112       26     10.9705

       84       20      8.4388

       81        7      2.9536

       85        7      2.9536

       92        7      2.9536

       94        7      2.9536

       95        7      2.9536

      105        7      2.9536

      108        7      2.9536

 10      114        7      2.9536

 

10 list当对多个变量进行交叉频率操作,我们只需要频数和百分比时可以用到。

proc freq data=Htwttmp order=freq;

tables sex*weight/list out=htwtfreq ;

format weight weight_ctg.;

run;

 

proc print data= htwtfreq(obs=10);

run;

结果:

Obs    sex    weight    COUNT    PERCENT

 

      m     >110        53     22.3629

      m     90-110      35     14.7679

      m     <90         38     16.0338

      f     >110        32     13.5021

      f     90-110      43     18.1435

      f     <90         36     15.1899

 

11 对缺失值和非缺失值进行频数统计

 

data Htwtmissing;

set Htwttmp;

if weight<100 then weight=.;

run;

proc format;

   value misscnt .= 'Missing'

               other ='Nonmissing';

run;

proc freq data = Htwtmissing;

   tables _numeric_ / missing nocum nopercent;

   format _numeric_ misscnt.;

run;

 

结果:

age

 age      频数

 ----------------------

 Nonmissing         237

 

 height

 height      频数

 ----------------------

 Nonmissing         237

 

 weight

 weight      频数

 ----------------------

 Missing            115

 Nonmissing         122

  评论这张
 
阅读(895)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017