4.11用proc freq为数据计数
对一个变量计算频数叫做one-way,两个叫做two-way,多个叫做交叉表。使用proc freq最明显的目的是现实分类数据的分布情况,基本形式为:
PROC FREQ;
TABLES vari abl e-combi nati ons;
产生一维频率表,只要列出变量名。下面的语句列出了变量yearseducation的每一个值的个数。
TABLES YearsEducati on;
建立两个变量的交叉表需要一个*号,下面的语句显示变量Sex by YearsEducation的频数情况:
TABLES Sex*YearsEducati on;
这个语句之后可以用/option的形式添加选项,主要下面几个:
LIST:用list形式打印交叉表(而不是网格)
MISSING:频率统计量中包含缺失值
NOCOL:强制在交叉表中不打印列百分比
NOROW:强制在交叉表中不打印行百分比
OUT=data-set:输出数据集
比如说,使用第二个选项:TABLES Sex*YearsEducation/MISSING;
例子有一家咖啡店的销售数据,记录了销售的咖啡种类(cappuccino,espresso,kona,or iced
coffee),以及每次购买的顾客是打包还是原地就饮:
代码告诉SAS打印两个表,一个是one-way的频率表,一个是交叉表。交叉表的每个小方格
内,SAS打印了频数、百分比、行百分比和列百分比。左边和右边是累积百分比。注意计算
频数时没有考虑缺失值。
数据表的错误kon?
4.12用proc tabulate产生一个表格报告
比起pri nt,means,freq,Proc tabulate过程产生的报告更耐看。
Proc tabulate的基本形式为:
PROC TABULATE;
CLASS cl assification-variable-list;
TABLE page-dimension,row-dimension,column-dimension;
Cl ass语句告诉SAS哪些变量将数据分成不同部分。
Table语句可以定义一个表,可以用多个table语句定义多个表,
维度table语句可以在报告中指定三个维度:页、行、列。如果只指定一个维度,则默认是列维度;如果指定两个,则是行和列。缺失数据默认下不考虑缺失数据,在proc语句后面增加missing选项可以改变这种默认:
PROC TABULATE MISSING;
例子 有关于船的一些数据,Boats.dat,记录了每艘船的姓名、港口、移动方式(sailing或者power vesse)l,类型(schooner,catamaran,or yacht),使用它远行的价格
你想得到一份报告,包含了每一个港口的、sailing或者power vessel的、每一种类型的、船的数量,下面的代码用proc tabulate创建了一个三维报告:港口作为页、移动方式作为行、类型作为列: