打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SAS学习笔记
http://blog.csdn.net/chenyi8888/article/category/908775分类:数据分析与挖掘 2012-08-15 18:33 227人阅读评论(0)收藏举报
inputnulloutputsqluser数据库
最近在做SAS转换代码,之前学过,但时间长了有所忘记,为了以后方便查找,所以再次进行复习的时候,对SAS学习进行了简单的记载。
SAS常用语法结构
SAS的变量的基本类型
第一:数值型
第二:字符型 变量名后必须使用$说明符
其他数据类型中,日期、时间等变量存为数值型,可以使任意的整数,定点实数、浮点实数等,一般使用8个字节。字符变量默认的长度为8个字符,当然也可以通过length语句指定其长度。Length 字符型变量名 $ 长度
对数据处理两大步骤:数据步和过程步
数据步 以data语句开始,以run语句结束;过程步以proc开始,以run语句结束。
libname 库标记 '文件夹位置' 选项;
假设C盘目录下,有一个文件夹"user",该文件夹下有一个sas数据集为aa。
那么就是这样执行:
libname a 'c:\user';
proc print data=a.aa;
run;
数据库分两个永久库和临时库:临时库就只有一个:名为WORK,永久库有多个。
指定两个库标记:
SASUSER:
WORK:
每个数据集都有一个两级名,第一级为库标记,第二级是数据集名
格式如下: 库标记.数据集名
DATA语句用于创建和处理数据集。作用有二:
第一:标志数据步调开始
第二:命名将要创建的SAS数据集
格式: DATA 数据集名;的
INFILE 用于从外部文件读入数据,必须出现在INPUT语句之前,主要功能如下:
第一:确定一个包含原始数据的外部文本文件
格式:INFILE '外部文件的所在位置及名称' 选项;
CARDS语句,用于直接输入数据,标志着数据块的开始。
CARDS:
数据块
;
INPUT语句,用于向系统表明如何读入每一条记录,主要功能:
读入由语句指定的数据列
为相应的数据域定义变量名
确定变量读入模式
格式:
INPUT 变量名 [变量类型 起止列数] ....;
数据的两种输入方式:直接输入和外部输入
SAS程序块
程序总是以PROC开头,后面紧跟程序步名
常用步名如下:
SORT 将指定数据集按指定变量排序
PRINT 将数据集中的数据列表输出
MEANS 对指定的数值变量进行简单的统计描述
FREQ 对指定的分类变量进行简单的统计描述
TTEST 对指定的变量做t检验
ANOVA 对指定的变量做方差分析
NPAR1WAY 对指定的变量做非参数校验
REG 对指定的变量做回归分析
CORR 对指定的变量做相关分析
CHART 绘出低分辨率的统计图
SQL 调用SQL语言
格式:
PROC 过程名 [data=数据集名] [选项];
该过程的专用语句描述;
[VAR 变量序列;]
[WHERE 条件表达式....;]
[BY 变量序列;]
RUN;
SAS各种常用随机函数
随机数函数名
作用
UNIFORM(seed)
产生(0,1)区域均匀分布随机数,乘同余发生器
RANUNI(seed)
产生(0,1)区域均匀分布随机数,素数模发生器
NORMAL(seed)
产生标准正态分布随机数,利用中心极限定理近似公式
RANNOR(seed)
产生标准正态分布随机数,利用变换抽样法
RANEXP(seed)
产生λ=1的指数分布随机数
RANGAM(seed,alpha)
产生伽马分布随机数,alpha>0,seed为任意数值
RANTRI(seed,h)
产生三角分布随机数,0<h<1,seed为任意数值
RANCAU(seed)
产生标准柯西分布随机数
RANBIN(seed,n,p)
产生二项分布随机数,n>0的整数,0<p<1,seed为任意数值
RANPOI(seed,lambda)
产生泊松分布随机数,lambda>0,seed为任意数值
RANTBL(seed,p1,…,p2,…pn)
产生离散分布随机数,0≤pi≤1,seed为任意数值
分支语句
if 条件 then 语句;
if 条件 then do 语句1;....语句n; end;
if 条件 then 语句; else 语句;
多分支结构:
select(选择表达式);
when(值列表) 语句;
when(值列表) 语句;
.....
otherwise 语句;
end;
select;
when(条件) 语句;
when(条件) 语句;
.....
otherwise 语句;
end;
SAS过程步常用命令
title 指定标题
var 指定分析变量
class 指定分类变量
model 指定模型形式
means 产生简单统计量
plot 绘制散点图
print 列出数据集内容
sort 按变量值进行排序
by 指定变量分组
output 指定输出结果存放的数据集
Freq 指定一个重复变量
where 选择数据集的子集
label 临时标签
我们这里给出了RETAIN语句几种常用的使用格式:
l Retain;
l Retain  T1  T2  T3;
l Retain  T1  T2  T3  100;
l Retain  T1  T2  T3  (100 );
l Retain  T1  T2  T3  (100  99  98 );
第一种使用格式表示用INPUT语句或赋值语句创建的所有变量从DATA步的这次执行到下一次重复时被保留。第二种使用格式规定了变量名字,变量列表或数组名,它们的值是用户想保留的。第三种使用格式表示一个变量列表T1、T2、T3接受同一个初始值100。第四种使用格式是将初始值100用小括号括起来,SAS系统将分配括号中的这个值给变量列表中的第一个变量,即T1=100,其它T2和T3为缺失值。第五种使用格式给出了初始值列表,将依此分配初始值列表中的值给变量列表中各个变量,即T1=100,T2=99,T3=98。
IN=选项
格式:SAS-data-set(IN=variable)
一个临时的数字类型的变量,其值为0或1
IN选项,当读入多个SAS数据集时,用IN选项可以确定本观测数据来自那个数据集。
variable=0表示观测不是来自本数据集
variable=1表示观测是来自本数据集
SAS聚类分析
PROC CLUSTER <数据集名> METHOD=NAME <options>;//必须语句
VAR
COPY
RMSSTD
ID
BY
FREQ
以上是可选择语句
if语句
data;
if x>y then
put "x>y";
else
if x<y then
put "x<y";
else
put "x=y";
run;
for语句
do 计数变量=初始值 to 终止值 by 步长;
....;
end;
do while (循环条件表达式);
.....;
end;
do until (循环条件表达式);
.....;
end;
= eq
< lt
> gt
< = le
> = ge
<> ne
set语句 表示从那个数据集里读入数据
格式:set 数据集名;
删除/增加变量或观测值
data Car;
set SASUSER.Car;
drop ID;
run;
data Car;
set SASUSER.Car;
keep Q1 B1 B2;
run;
数据拆分
data SASUSER.Car_low SASUSER.Car_high;
set SASUSER.car;
select;
when (B1<=2) output SASUSER.Car_Low;
otherwise  output SASUSER.Car_high;
end;
run;
数据合并有两种:纵向和横向
data SASUSER.Car_total;
set SASUSER.car_low SASUSER.car_high;
run;
proc sort=SASUSER.student_profile;
by ID;
run;
proc sort=SASUSER.student_score;
by ID;
run;
data SASUSER.student_total;
merge SASUSER.student_profile SASUSER.student_score;
by ID;
run;
proc print;run;
数据清洗
一般用proc sql的方式
数据修正
数据标准化
数据尺度变换 如:原始数据十分制变成百分制
数据更新 update
proc rank 其实最主要的是掌握那几个选项,该proc 的整体语法结构如下:
proc rank <选项>;
var 变量;
ranks 新变量名字;
by 分组变量;
run;
这是一个整体的语法结构,举例,比如说我要对sashelp中的height排名次:
proc rank data=sashelp.class out=result;
var height;
run;
很显然就是这样写,用var来指定要排名次的变量,但是你运行该程序后会发现一个问题,就是原来的height的值都被名次代替了。如果我想保留原来的height值,那就需要用ranks语句了:
proc rank data=sashelp.class out=result;
var height;
ranks r_height;
run;
这样原来的height变量就不会动,生成名次变量r_height,这就是ranks的作用。
例子:
proc rank descending out=oE11;
var compsit;
ranks rankcompsit;
proc sort; by rankcompist;
proc print data=oE11;
run;
均值
data;
x=mean(89,90,78,98,87,76,69,90,92,88);
put '均值=' x;
run;
均值统计里有两个概念:截尾均值和缩尾均值
前者是去掉最大N个和最小N值后的平均值
后者是最小的N个值用第N+1小的那个数值替换,同时也把最大的N个值用第N+1大的那个数值替换,然后计算均值
用univariate过程计算上述两种均值
data null;
input score@@;
cards;
89 90 78 98 87 76 69 90 92 88
;
proc univariate data=null trimmed=2 winsorized=2;
var score;
run;
中位数
如果数据个数是奇数,中位数是处于正中心位置的数值;如果数据个数是偶数,中位数则是处于正中心位置的两项数据的平均数
data;
x=median(89,90,78,98,87,76,69,90,92,88);
put '中位数=' x;
run;
分位数
就是分等分。在实际应用中四分位应用最为广泛。
在SAS中 Q1表示处于25%,Q3表示处于75%
data null;
input score@@;
cards;
89 90 78 98 87 76 69 90 92 88
;
proc means data=null q3 q1;
var score;
run;
众数
指数据中出现次数最多的数值。
data null;
input score@@;
cards;
190 188 188 185 183 183 180 180
180 180 177 175 175 174 173
;
proc univariate data=null modes;
var score;
run;
离散程度
集中趋势概括数据可以使人们在大体上对数据产生初步的印象,但是这些指标对数据进行高度抽象的同时,也忽略了一些必要的数据信息,使得
人们在某些情况下只能看到数据呈现出来的假象,而不能读懂其真正的内在涵义。
指标有级差、平均差、四分位差、异众比率、方差、标准差、标准误差及离散系数
级差
是数据最大值减去最小值所得的差
data;
x=range(89,90,78,98,87,76,69,90,92,88);
put '级差=' x;
run;
四分位差
具体指第3个四分位数减去地1个四分位数得到的差
其值越小,说明中间的数据越集中
data null;
input score@@;
cards;
190 188 188 185 183 183 180 180
180 180 178 177 175 175 174 173
;
proc means data=null qrange;
var score;
run;
方差
用全体数据进行计算的,因此它反映了所有数据相对于数据中心发散的平均程度。方差的算术平方根就是标准差。
data;
x=var(89,90,78,98,87,76,69,90,92,88);
y=std(89,90,78,98,87,76,69,90,92,88);
put '方差=' x '标准差=' y;
run;
标准误差
它的样本均值的标准差。在进行数据抽样中,由于随机性的存在,采用同一种抽样方法在不同的时间、地点、环境等条件下进行多次抽样,可能得到多个不同的样本数据。
标准误差不是观测值的实际误差,也不是误差范围,它只是对一组观测数据可靠性的估计。标准误差越小,则观测到可靠性大,反之则不大可靠。多数应用都用标准误差来评价数据的测量精度。
data;
x=stderr(89,90,78,98,87,76,69,90,92,88);
put '标准误差=' x;
run;
变异系数
变异系数是衡量相对离散程度的一个重要指标。具体是指一组数据的标准差与其相应的均值之比,变异系数越小,说明数据的离散程度越小。
举例说明,身高和体重差异如何进行对比?直接采用标准差是无法进行对比的,因为标准差是带有单位的,身高的单位是厘米,体重的单位是千克,不同的单位的统计量对比起来是没有任何意义的。为此,采用变异系数来消除量纲即计量单位的影响,进行对比。
data;
height=cv(157,170,161,184,184,168,166,158,174,166,173,189,188,163,161,189,183,186,188,155);
weight=cv(61,71,74,59,71,55,73,66,50,57,48,68,73,52,60,56,53,67,73,64);
put '身高的变异系数=' height '体重的变异系数=' weight;
if height>weight then
put '身高比体重的差异大';
else
if height<weight then
put '身高比体重的差异小';
else
put '身高比体重的差异相当';
run;
分布形状
在对数据进行概括性的分析时,考察集中趋势和离散程度是两个重要方面,但并非仅此而已。就像对一个人进行评价一样,不仅要考察人的高矮情况,也考考察胖瘦情况,更要看看一个人是否站有站相,坐有坐相。对于数据的分布状况,也要进行概括性的分析,才能掌握数据的全貌。
数据分布的测度主要考察数据分布的偏斜程度、扁平程度,以及数据分布是否对称,其指标主要有偏度和峰度两类。
偏度
是对数据分布对称性的测度。通常采用三阶中心矩的计算方法,其主要考察离差三次方之和与标准差的三次方的比例。
如果数据是对称的,则偏度等于0;如果偏度明显不等于0,则表明数据分布是非对称的,具体地说,偏度大于0时,均值右边的数据更为分散,表明数据右偏;偏度小于0时,均值左边的数据更为分散,表明数据左偏。
data;
x=skewness(190,188,188,185,183,183,180,180,180,180,178,177,175,175,174,173);
put '偏度=' x;
run;
峰度
用来反映数据分布曲线顶端陡峭或偏平程度的指标。这里所说的陡峭或偏平是针对标准正态分布而言的。
data;
x=kurtosis(190,188,188,185,183,183,180,180,180,180,178,177,175,175,174,173);
put '峰度=' x;
run;
sas利用FREQ、MEANS、UNIVARIATE过程进行描述统计分析。
proc freq <选项>;
by 变量/变量列表;
exact 统计选项</计算选项>;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SAS初阶1
SAS:SAS 常用过程之 统计描述过程proc univariate
随机对照试验中缺失数据的填补
转:SAS和蒙特卡罗模拟(3 ) - 模型编程 - 风险视界-风险管理与金融工程专业交流平...
pearson, kendall 和spearman三种相关分析方法的区别
【PROC TABULATE】输出统计量表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服