SAS学习系列11 对数据做简单的描述统计Word文档格式.docx

上传人:b****5 文档编号:21374427 上传时间:2023-01-30 格式:DOCX 页数:14 大小:236.58KB
下载 相关 举报
SAS学习系列11 对数据做简单的描述统计Word文档格式.docx_第1页
第1页 / 共14页
SAS学习系列11 对数据做简单的描述统计Word文档格式.docx_第2页
第2页 / 共14页
SAS学习系列11 对数据做简单的描述统计Word文档格式.docx_第3页
第3页 / 共14页
SAS学习系列11 对数据做简单的描述统计Word文档格式.docx_第4页
第4页 / 共14页
SAS学习系列11 对数据做简单的描述统计Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

SAS学习系列11 对数据做简单的描述统计Word文档格式.docx

《SAS学习系列11 对数据做简单的描述统计Word文档格式.docx》由会员分享,可在线阅读,更多相关《SAS学习系列11 对数据做简单的描述统计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

SAS学习系列11 对数据做简单的描述统计Word文档格式.docx

(4)默认输出非缺省值个数、均值、标准差、最大值、最小值;

也可以自己指定需要输出的描述统计量:

MAX——最大值;

MIN——最小值;

MEAN——均值;

MEDIAN——中位数;

MODE——众数;

N——非缺省值个数;

NMISS——缺省值个数;

RANGE——极差;

STDDEV——标准差;

SUM——累和;

例1鲜花销售的数据(C:

\MyRawData\Flowers.dat),变量包括顾客ID,销售日期,petunias,snapdragons,marigolds三种花的销量:

读取数据,计算新变量销售月份month,并使用procsort按照月份排序,并使用procmeans的by语句来按照月份描述数据。

代码:

datasales;

infile'

c:

\MyRawData\Flowers.dat'

inputCustID$@9SaleDateMMDDYY10.PetuniaSnapDragonMarigold;

Month=MONTH(SaleDate);

procsortdata=sales;

byMonth;

/*CalculatemeansbyMonthforflowersales;

*/

procmeansdata=salesMAXDEC=0;

varPetuniaSnapDragonMarigold;

title'

SummaryofFlowerSalesbyMonth'

run;

运行结果:

(二)使用统计量

有时候需要将统计量存入新数据集,以便进一步做数据分析,或者与原数据集合并。

一、将统计量存入新数据集

可以用ODS(OutputDeliverySystem)系统或者OUTPUT语句,下面介绍用OUTPUT语句。

语法:

OUTPUTOUT=数据集名统计量名(变量列表)=新列名;

示例:

PROCMEANSDATA=zooNOPRINT;

VARLionsTigersBears;

OUTPUTOUT=zoosumMEAN(LionsBears)=LionWeightBearWeight;

RUN;

例2仍然是例1的鲜花数据,读取数据,按照CustomerID排序,使用procmeans过程,将mean和sum值存入新数据集totals中。

byCustID;

/*CalculatemeansbyCustomerID,outputsumandmeantonewdataset;

procmeansNOPRINTdata=sales;

outputout=totals

mean(PetuniaSnapDragonMarigold)=MeanPMeanSDMeanM

sum(PetuniaSnapDragonMarigold)=PetuniaSnapDragonMarigold;

procprintdata=totals;

SumofFlowerDataoverCustomerID'

formatMeanPMeanSDMeanM3.;

程序说明:

(1)“NOPRINT”告诉SAS不产生任何输出结果,因为已经存入新数据集zoosum;

(2)保存统计量的新数据集,包括想要的统计量、BY/CLASS语句的变量、_TYPE_、_FREQ_;

(3)BY语句变量有3个水平:

756-01、834-01、901-02,结果是3个观测,CLASS类似。

二、合并统计量到原数据集

1.前面讲到将按“BY变量”分组统计量保存为统计量数据集,进一步可以用MERGE语句,将统计量数据集按照公共的“BY变量”,通过一对多匹配合并到原数据集。

例3运动鞋经销商的销售数据(C:

\MyRawData\Shoesales.dat),变量包括风格名称、运动类型、第四季度销量:

市场经理想要一个报表,每种风格运动鞋占该运动类型销量中的百分比。

datashoes;

\MyRawData\Shoesales.dat'

inputStyle$1-15ExerciseType$Sales;

procsortdata=shoes;

byExerciseType;

/*SummarizesalesbyExerciseTypeandprint;

procmeansNOPRINTdata=shoes;

varSales;

outputout=summarydatasum(Sales)=Total;

procprintdata=summarydata;

SummaryDataSet'

/*Mergetotalswiththeoriginaldataset;

datashoesummary;

mergeshoessummarydata;

Percent=Sales/Total*100;

procprintdata=shoesummary;

idExerciseType;

varStyleSalesTotalPercent;

SalesSharebyTypeofExercise'

2.若统计量是全体观测的汇总统计量(无BY变量做分组统计),此时,就不能直接采用一对多匹配(没有共同“BY变量”)合并。

但可以用SET语句实现。

DATA新数据集;

IF_N_=1THENSET汇总统计量数据集;

SET原数据集;

注:

“汇总统计量数据集”只有一条观测值。

创建新数据集时,第一次迭代循环(_N_=1)就读入该观测值,并一直为后续读入“原数据集”保留它(相当于RETAIN语句)。

该语法机制也可用于:

没有匹配变量情况下,将一条观测与多条观测合并。

例4仍是例3的数据,市场经理想要一个报表,每种风格运动鞋占总销量的百分比。

*Outputgrandtotalofsalestoadatasetandprint;

outputout=summarydatasum(Sales)=GrandTotal;

*Combinethegrandtotalwiththeoriginaldata;

if_N_=1thensetsummarydata;

setshoes;

Percent=Sales/GrandTotal;

varStyleExerciseTypeSalesGrandTotalPercent;

formatPercentPERCENT.2;

OverallSalesShare'

(三)使用procfreq为数据计数

用procfreq过程步可以对数据集的变量计算频数,再用tables命令以表格的形式输出:

只输出一个变量(单向表);

输出两个变量(双向表);

输出多个变量(交叉表)。

频数表也可以用来检查错误数据。

PROCFREQdata=数据集;

TABLES变量组合<

/可选项>

(1)关于变量组合:

一个变量的单向表,用“TABLES变量;

”;

两个变量的双向表,用“TABLES变量1*变量2;

(2)常用的可选项有:

LIST——用list形式打印交叉表(而不是网格);

MISSING——频数统计量中包含缺失值;

NOCOL——强制在交叉表中不打印列百分比;

NOROW——强制在交叉表中不打印行百分比;

OUT=data-set——输出数据集;

例5咖啡店的销售数据(C:

\MyRawData\Coffee.dat),记录了销售的咖啡种类(cappuccino,espresso,kona,icedcoffee),以及每次购买的顾客是打包还是原地就饮:

读入数据,计算两个变量的频数。

dataorders;

\MyRawData\Coffee.dat'

inputCoffee$Window$@@;

*PrinttablesforWindowandWindowbyCoffee;

procfreqdata=orders;

tablesWindowWindow*Coffee;

*输出两个表:

Window的单向表、Window和Coffee双向表;

(1)默认缺省值不计入频数,使用可选项MISSING可以包含缺省值;

(2)观察表2,可以发现Kon是错误数据,应该是kon.

(四)使用proctabulate生成表格报表

用proctabulate过程步可以生成表格报表,相当于给普通输出报表做个“礼盒包装”,让报表更美观好看。

该过程还可以计算、加入、输出统计量。

PROCTABULATE<

MISSING>

data=数据集<

指定格式>

VAR指定作统计分析的变量;

(按变量的值对数据做分组,分别处理)

TABLE分页变量,分行变量,分列变量<

 

(1)TABLE语句定义表格形式:

页维度、行维度、列维度;

指定一个变量默认是列形式,指定两个变量默认是行列形式;

(2)tabulate可以加上如下的关键词(用在TABLE变量中计算各统计量):

ALL——增加一行、一列或一页,显示总数目;

MAX——最大值;

MEAN——平均值;

P90——90%分位数;

PCTN——某类的观测值百分数;

PCTSUM——某类值总和的百分数;

SUM——求和;

(3)TABLE语句中,可以对变量做连接、交叉,或者它们的组合:

“连接”示例:

TABLELocomotionTypeALL;

“交叉”示例:

TABLEMEAN*Price;

“组合”示例:

TABLEPCTN*(LocomotionType);

(4)可以在proc步用可选项<

(全局),指定所有数据的输出格式,例如,

PROCTABULATEDATA=boatsFORMAT=COMMA10.0;

(5)TABLE语句的可选项:

/BOX=’str’,可以给表格报表的左上角方框输出“说明性短句”;

/MISSTEXT=’str’,可以给表格中的缺省数据指定一个“值”;

例如,

TABLERegion,MEAN*Sales/BOX='

MeanSalesbyRegion'

MISSTEXT='

NoSales'

例6关于船的数据(C:

\MyRawData\Boats.dat),变量包括名称、港口、动力方式、类型、价格、船长(英尺):

读入数据生成二维(列×

行)表格报表:

变量Locomotion和均值Mean分别作为报表的行和列,并增加一行、一列“计算总数目”(ALL关键词),并使用BOX和MISSTEXT选项增加表格的可读性。

databoats;

\MyRawData\Boats.dat'

inputName$1-12Port$14-20Locomotion$22-26Type$28-30Price32-37Length39-41;

*PROCTABULATEreportwithoptions;

proctabulatedata=boatsFORMAT=DOLLAR9.2;

classLocomotionType;

varPrice;

tableLocomotionALL,MEAN*Price*(TypeALL)/BOX='

FullDayExcursions'

none'

title;

(1)ALL关键词,英文版SAS软件中,显示是“All”而不是“全部”(可能是软件汉化的bug);

若要修改为过来,可以将代码中的table行,替换为:

tableLocomotionALL='

All'

MEAN*Price*(TypeALL='

)/BOX='

(2)若想去掉“Locomotion”、合并“Mean”“Price”“Type”单元格使得表格更紧凑,可以用“将Table变量赋值为空字符的形式”实现:

*Changingheaders;

procFORMAT;

value$typ'

cat'

='

catamaran'

'

sch'

schooner'

yac'

yacht'

proctabulatedata=boatsFORMAT=DOLLAR9.2;

formatType$typ.;

tableLocomotion='

ALL='

MEAN='

*Price='

MeanPricebyTypeofBoat'

*(Type='

table语句,是用赋值为空字符的形式去掉Locomotion、MEAN、Type单元格,并将Price单元格换成“MeanPricebyTypeofBoat”;

有时候当行顶部被赋为空字符时,会留下一个空白空格,可以用/ROW=FLOAT选项强制去除它,示例:

TABLEMEAN='

*Sales='

Region='

/ROW=FLOAT;

(3)也可以不在proc步中指定全局格式,而是为不同的数值变量指定不同的输出格式,示例:

TABLELocomotionALL,MEAN*(Price*FORMAT=DOLLAR7.2Length*FORMAT=2.0)*(TypeALL);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1