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

公卫人

博学而笃志 切问而近思

 
 
 

日志

 
 

Freq过程介绍  

2014-12-11 12:28:26|  分类: 统计分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 原文地址: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            2.9536

       85            2.9536

       92            2.9536

       94            2.9536

       95            2.9536

      105            2.9536

      108            2.9536

 10      114            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

 

         >110        53     22.3629

         90-110      35     14.7679

         <90         38     16.0338

         >110        32     13.5021

         90-110      43     18.1435

         <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

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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