文档库 最新最全的文档下载
当前位置:文档库 › SAS学习系列09. 用SET语句创建,修改数据集

SAS学习系列09. 用SET语句创建,修改数据集

SAS学习系列09. 用SET语句创建,修改数据集
SAS学习系列09. 用SET语句创建,修改数据集

09. 用SET语句创建,修改数据集

(一)用SET语句创建/修改数据集

用SET语句,可以从已有数据集创建新数据集、增加新变量、修改数据集。

注意:SET语句是一次一个观测值地,对已有数据集循环执行数据步创建新数据集。

一、基本语法

data 新数据集名< (可选项) >;

set 已有数据集名< (可选项) >;

示例(从数据集sales创建子数据集Friday,增加变量Total):data friday;

set sales;

if Day = 'F';

Total = Popcorn + Peanuts;

run;

例1 关于火车运汽车的数据(C:\MyRawData\Train.dat),包括发车时间、火车上的汽车数、火车中的人数:

数据被读入一个永久数据集trains.sas7bdat中,储存在“D:\我的文档\My SAS Files\9.3”目录下。

代码:

data'c:\MySASLib\trains';

infile'c:\MyRawData\Train.dat';

input Time TIME5. Cars People;

run;

由于每辆车的最大乘客数为6人,现在想知道一列火车上,平均每辆汽车的乘客数是多少,在一个新数据集中插入一列计算。

代码:

set'D:\我的文档\My SAS Files\9.3\trains';

PeoplePerCar = People / Cars;

run;

proc print data = averagetrain;

title'Average Number of People per Train Car';

format Time TIME5.;

run;

运行结果:

二、用“drop(舍弃)和keep(保留)选项”选择变量(列)

在data步中该选项以及SET语句,可以控制从原数集中读出的变量是否被写入要创建的数据集。

基本形式:

data 新数据集名(keep = 变量1…) (drop = 变量1…);

set 旧数据集;

注:keep和drop选项也可用于输出数据集时的可选参数;

另外,rename选项可以对列变量重命名,示例:

data animals (RENAME = (Class = Type Habitat = Home));

set animals;

例2 学生成绩数据(c:\MyRawData\tests.txt),包含变量Name, Subject, Gender, Exam1, Exam2, Homework:

读入数据,创建新数据集,舍弃变量Subject和Homework,重命名变量Name为Student Name.

代码:

data Test;

infile'c:\MyRawData\tests.txt';

input Name $1-9Subject 11-12Gender $ 14Exam1 16-18Exam2 20-22 Homework $ 24;

run;

proc print data=Test;

title'Test';

run;

data Test1 (DROP = Subject Homework RENAME =(Name = Student Name));

/* 用 (KEEP = Name Gender Exam1 Exam2) 也一样效果 */

set Test;

proc print data = Test1;

title'Test1';

run;

运行结果:

三、SET语句中使用可选项FIRSTOBS=n 和OBS=m 选择观测

值(行)

表示只选择旧数据集中的第n 条到第m 条观测值。示例:data animals

set animals (FIRSTOBS = 101 OBS = 120);

另外,选择观测值(行),也可用IF-THEN(条件)语句选出满足条件的观测值(行)。【见前文】

(二)用UPDATE语句更新数据集的数据

经常会遇到需要不断更新的数据集,比如银行账户每笔交易完需要更新有变动的数据。用UPDATE语句可以实现这一功能,需要主数据集和新数据集有共同变量(来匹配)。

基本形式:

data 主数据集;

update 主数据集新数据集;

by 共同(匹配)变量;

注:(1)主数据集和新数据集都需要事先按共同变量排好序,且共同变量必须具有唯一性;

(2)新数据集中的缺省值不会改下主数据集的相应数值。

例3医院有一份关于病人的主数据(C:\MyRawData\Admit.dat)变量包括病人账户号、姓名、地址、出生日期、性别、保险代码、信息最

后更新的时间:

当有新病人或其他病人再进医院时,信息会被更新,比如,第一个病人的保险代码被更换了、最后一个病人的缺失数据被填补上、有新病人加入。更新数据文件(C:\MyRawData\NewAdmit.dat)如下:

将主数据存入一个名为patientmaster 的永久数据集,读取新数据并排序,使用update 语句将新数据更新到主数据中。

代码:

libname perm 'D:\我的文档\My SAS Files\9.3';

data perm.patientmaster;

infile'c:\MyRawData\Admit.dat';

input Account LastName $ 8-16 Address $ 17-34

BirthDate MMDDYY10.Sex $ InsCode $ 48-50@52LastUpdate MMDDYY10.;

run;

data perm.transactions;

infile'c:\MyRawData\NewAdmit.dat';

input Account LastName $ 8-16 Address $ 17-34 BirthDate MMDDYY10.

Sex $ InsCode $ 48-50 @52 LastUpdate MMDDYY10.;

run;

proc sort data = transactions;

by Account;

run;

* Update patient data with transactions;

data perm.patientmaster;

update perm.patientmaster transactions;

by Account;

run;

proc print data = perm.patientmaster;

format BirthDate LastUpdate MMDDYY10.;

title'Admissions Data';

run;

运行结果:

另外,也可以用MODIFY语句修改数据集,比用SET 语句修改更有效率,因为MODIY 修改数据集,只是在原数据集上做修改,而不会创建新数据集。

(三)用TRANSPOSE 过程步对数据集转置

有时候需要将数据集(表)的观测值(行)和变量(列)交换,即把观测值变为变量,把变量变为观测值,用TRANSPOSE 过程实现。

基本形式:

proc transpose data=原数据集out=转置数据集<可选项> ;

by 原数据集中不参与转置的列变量;

id 给转置后的列赋予变量名;

var 原数据中需要转置的列变量;

说明:(1)by 语句指定原数据集中不参与转置的变量(转置之前需要先按该变量排好序),一般“用来分组的变量”不参与转置,例如上图中的X 列;

(2)id语句给转置后的列赋予变量名,默认是:COL1 COL2……,可以使用原数据集的某列(若该列是数值,则加下划线作为前缀,以符号变量的命名规范);

(3)可选项“NAME =变量名”,为原数据集各列变量名(在转置数据集作为第一列)起个变量名,默认是用_NAME_;

(4)可选项“PREFIX = 前缀”,用“前缀”替换(2)中默认列变量名的“COL”。

例4 关于儿童棒球联盟选手的数据(C:\MyRawData\Transpos.dat),包括包括队名、选手编号、类型(击球数/击球率)、以及击球数/击球率:

观察数据,第 3 列的salary(击球数)、batavg(击球率)应该是列变量名,其取值是第 4 列。读取数据,对第 3 列进行转置。

代码:

data baseball;

infile'c:\MyRawData\Transpos.dat';

input Team $ Player Type $ Entry;

proc sort data = baseball;

by Team Player;

proc print data = baseball;

title'Baseball Data After Sorting and Before Transposing';

run;

* Transpose data so salary and batavg are variables;

proc transpose data = baseball OUT = flipped;

by Team Player;

id Type;

var Entry;

proc print data = flipped;

title'Baseball Data After Transposing';

run;

运行结果:(相当于将红圈的四个值转置,同时两行并一行)

程序说明:

(1)“by Team Player”指定原Team 列和Player 列,不参与转置,仍作为转置数据集的列;

(2)“id Type”指定Type 列的值:salary 和batavg 作为转置数据的变量名;

(3)“var Entry”指定对Entry 列进行转置,同时列名“Entry”将作为“值”成为转置数据集的一列,默认列名是“_NAME_”,可用【可选项“NAME =…”】修改它。

SAS中的SQL语句大全

S A S中的S Q L语句完全教程之一:S Q L简介与基本查询功能本系列全部内容主要以《SQLProcessingwiththeSASSystem(CourseNotes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。 1SQL过程步介绍 过程步可以实现下列功能: 查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL 语句、可以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。 过程步的特征 SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print 过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程步 过程步语句 SELECT:查询数据表中的数据 ALTER:增加、删除或修改数据表的列 CREATE:创建一个数据表 DELETE:删除数据表中的列 DESCRIBE:列出数据表的属性 DROP:删除数据表、视图或索引

RESET:没用过,不知道什么意思 SELECT:选择列进行打印 UPDATE:对已存在的数据集的列的值进行修改 2SQL基本查询功能 语句基本语法介绍 SELECTobject-item<,...object-item> FROMfrom-list > >; 这里SELECT:指定被选择的列 FROM:指定被查询的表名 WHERE:子数据集的条件 GROUPBY:将数据集通过group进行分类 HAVING:根据GROUPBY的变量得到数据子集 ORDERBY:对数据集进行排序 语句的特征 选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32个表。这里还要提到的就是,在SAS系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符 关键字 Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语

SAS中的SQL语句大全

SAS中的SQL语句完全教程之一:SQL简介与基本查询功能 本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。 1 SQL过程步介绍 SQL过程步可以实现下列功能: 查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。 SQL过程步的特征 SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL 过程步 SQL过程步语句 SELECT:查询数据表中的数据 ALTER:增加、删除或修改数据表的列 CREATE:创建一个数据表 DELETE:删除数据表中的列 DESCRIBE:列出数据表的属性 DROP:删除数据表、视图或索引 INSERT:对数据表插入数据 RESET:没用过,不知道什么意思 SELECT:选择列进行打印 UPDATE:对已存在的数据集的列的值进行修改 2 SQL基本查询功能 SELECT语句基本语法介绍 SELECT object-item <, ...object-item> FROM from-list > >; 这里SELECT:指定被选择的列 FROM:指定被查询的表名

SAS软件对数据集一些简单操作

SAS软件对数据集一些简单操作Libname AA 'd:\SAS'; Data AA.feng; Input a b c; cards; 3 4 56 64 43 34 累加 DATA A; INPUT X Y @@; S+X; CARDS; 3 5 7 9 20 21 ; PROC PRINT; RUN; ; run; DATA D1; INFILE ‘C:FIT.TXT' INPUT NUM $ 1-4 SEX $ 5 H 6-9 W 10-11; RUN; 建立数据集求均值 data a; input name$sex$math chinese@@; cards; 张三男82 96 刘四女81 98 王五男90 92 黄六女92 92 ; proc print data=a; proc means data=a mean; var math chinese; run; 保留列 data b; set a; keep name math; run; 丢弃列 data b; set b;

drop name; run; 条件选择 data c; set a; if math>90 and chinese>90; run; 把超过九十分改为90分data aa; set a; if chinese>90 then chinese=90; run; 筛选行 data aaa ; set a(firstobs=2 obs=3); run; 拆分男女 data a1 a2; set a; select(sex); when('男')output a1; when('女')output a2; otherwise put sex='wrong'; end; drop sex; run; 合并 data new; set a1(in=male) a2(in=female); if male=1 then sex=''; if female=1 then sex=''; run; 纵向合并Set 横向合并merge 重命名rename 改标志label 排序语句 proc sort data=a out=b; by sex;

《SAS数据分析范例》(SAS数据集)

《SAS数据分析范例》数据集 目录 表1 sas.bd1 (3) 表2 sas.bd3 (4) 表3 sas.bd4 (5) 表4 sas.belts (6) 表5 sas.c1d2 (7) 表6 sas.c7d31 (8) 表7 sas.dead0 (9) 表8 sas.dqgy (10) 表9 sas.dqjyjf (11) 表10 sas.dqnlmy3 (12) 表11 sas.dqnlmy (13) 表12 sas.dqrjsr (14) 表13 sas.dqrk (15) 表14 sas.gjxuexiao0 (16) 表15 sas.gnsczzgc (17) 表16 sas.gnsczzs (18) 表17 sas.gr08n01 (19) 表18 sas.iris (20) 表19 sas.jmcxck0 (21) 表20 sas.jmjt052 (22) 表21 sas.jmjt053 (23) 表22 sas.jmjt054 (24) 表23 sas.jmjt055 (25) 表24 sas.jmxfsps (26) 表25 sas.jmxfspzs0 (27) 表26 sas.jmxfzss (28) 表27 sas.jmxfzst (29) 表28 sas.kscj2 (30) 表29 sas.modeclu4 (31) 表30 sas.ms8d1 (32) 表31 sas.nlmyzzs (33) 表32 sas.plates (34) 表33 sas.poverty (35) 表34 sas.rjnycpcl0 (36) 表35 sas.rjsrs (37) 表36 sas.sanmao (38) 表37 sas.sczz1 (39) 表38 sas.sczz06s (40) 表39 sas.sczz (41) 表40 sas.sczzgc1 (42)

SAS软件学习总结

SAS软件知识要点总结 李明 注意:数据集要有名字,变量要有名字,所以 SAS 中对名字(数据集名、变量名、数据库名,等等)有约定:SAS 名字由英文字母、数字、下划线组成,第一个字符必须是字母或下划线,名字最多用8 个字符,大写字母和小写字母不区分。比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc 和aBC 是同一个名字,而class-1(不能有减号)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents(超长)等不是合法的名字。 二、MODEL 语句 MODEL 语句在一些统计建模过程中用来指定模型的形式。其一般形式为 MODEL 因变量=自变量表 / 选项; 比如 model math=chinese; 即用语文成绩预测数学成绩。 注意:MODEL就是指出谁是因变量,谁是自变量; 三、BY 语句和CLASS 语句 BY语句在过程中一般用来指定一个或几个分组变量,根据这些分组变量值把观测分组,然后对每一组观测分别进行本过程指定的分析。在使用带有BY 语句的过程步之前一般先用 SORT 过程对数据集排序 注意:BY语句就是按某给定指标分类(组) 在一些过程(如方差分析)中,使用CLASS 语句指定一个或几个分类变量,它实际相当于因变量。而在另一些过程(如MEANS)中,CLASS 语句作用与BY 语句类似,可以指 定分类变量,把观测按分类变量分类后分别进行分析。使用CLASS 时不需要先按分类变量 排序。

注意:CLASS语句的作用有两个:1.指定(分类变量),本身就是因变量; 2.与BY类似,指定分类变量并分类; 四、OUTPUT 语句 在过程步中经常用 OUTPUT 语句指定输出结果存放的数据集。不同过程中把输出结果存入数据集的方法各有不同,OUTPUT 语句是用得最多的一种,其一般格式为: OUTPUT OUT=输出数据集名关键字=变量名关键字=变量名?; 其中用OUT=给出了要生成的结果数据集的名字,用“关键字=变量名”的方式指定了输 五、FREQ 语句和WEIGHT 语句 FREQ 语句指定一个重复数变量,每个观测中此变量的值说明这个观测实际代表多少个完全相同的重复观测。FREQ 变量只取整数值。如 freq numcell; WEIGHT 语句指定一个权重变量,在某些允许加权的过程中代表权重,其值与观测对应的方差的倒数成比例。 注意:FREQ是计量频数的;WEIGHT则是计量权重的; 七、WHERE语句(就是条件句) 用WHERE 语句可以选择输入数据集的一个行子集来进行分析,在WHERE 关键字后指定一个条件。比如: where math>=60 and chinese>=60; 指定只分析数学、语文成绩都及格的学生。

第三课SAS数据集

第三课SAS数据集 一.SAS数据集的结构 SAS数据集是关系型的,它通常分为两部分: ●描述部分——包含了一些关于数据属性的信息 ●数据部分——包括数据值 SAS的数据值被安排在一个矩阵式的表状结构中,见图3-1所示。 ●表的列称之为变量(Variable),变量类似于其它文件类型的域或字段(Field); ●表的行称之为观察(Observation),观察相当于记录(Record)。 变量1 变量2 变量3 变量4 Name Test1 Test2 Test3 观察1 Xiaoer 90 86 88 观察2 Zhangsan 100 98 89 观察3 Lisi 79 76 70 观察4 Wangwu 68 71 64 观察5 Zhaoliu 100 89 99 图3-1 一个SAS数据文件 二.SAS数据集形式 SAS系统中共有两种类型的数据集: ●SAS 数据文件(SAS data files) ●SAS 数据视窗(SAS data views) SAS 数据文件不仅包括描述部分,而且包括数据部分。SAS 数据视窗只有描述部分,没有数据部分,只包含了与其它数据文件或者其它软件数据的映射关系,能使SAS的所有过程可访问到,实际上并不包含SAS 数据视窗内的数据值。 自始自终,在SAS语言中,“SAS数据集”与这二种形式中之一有关。在下面的例子中,PRINT过程用相同方法处理数据集aaa.abc,而忽略它的形式: PROC PRINT DATA=aaa.abc 三.SAS数据集的名字 SAS数据集名字包括三个部分,格式如下: Libref.data-set-name.membertype ●Libref(库标记)──这是SAS数据库的逻辑名字 ●data-set-name(数据集名字)──这是SAS数据集的名字 ●membertype(成员类型)──SAS数据集名字的这一部分用户使用时不必给出。 SAS 数据文件的成员类型是DATA;SAS 数据视窗的成员类型是VIEW 例如上面例子中的aaa.abc这个SAS数据集名字,aaa是库标记,abc是数据集名字,成

一些常用的SAS命令

常用SAS命令 1. SAS的子窗口主要有浏览器窗口(EXPLORER)、结果窗口(RESULTS)、程序编辑器窗口(program editor)、日志窗口(log)、输出窗口(output); 2.切换至日志窗口的命令是log、热键是F6;切换至输出窗口的命令是output、热键是F7; 3.提交SAS程序的命令是submit; 4. SAS系统是大型集成软件系统,具备完备的数据访问、管理、分析和呈现及应用开发功能; 5. SAS数据集是一类由SAS系统建立、维护和管理的数据文件; 6.为了实现存储和管理面向对象的开发任务,SAS建立目录册(catalog)类型的文件,在这一类文件中可以存储整个应用系统,包括它的界面,源程序和各种对象间的连接; 7. SAS逻辑库是一个逻辑概念,一个逻辑库就是存放在同一文件夹或

几个文件夹中的一组SAS文件; 8.在SAS软件系统的信息组织中,总共只有两个层次:SAS逻辑库是高一级的层次,低一级的层次就是SAS文件本身; 9.在SAS系统中,为便于访问一个SAS文件,要为该SAS文件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名,在指定逻辑库名后,就可使用两级命名的方式引用SAS文件:逻辑库名.文件名; 10.在每个SAS进程一开始,系统就自动地指定了一些逻辑库供用户使用,它们是WORK、SASHELP和SASUSER; 11.在每个SAS进程开始时系统缺省地创建名为work的SAS逻辑库,它是一个临时逻辑库,在引用WORK库中的SAS文件时,可省略逻辑库名; 12.永久逻辑库是指它的内容在当前SAS进程结束时仍被保留的SAS 逻辑库,在SAS系统中除了库名为WORK以外的逻辑库都是永久库; 13. Sashelp包含所安装SAS系统各个产品有关的SAS文件,运行安装的SAS系统所需要的SAS文件缺省地存储在这个逻辑库中;

SAS数据集操作

目录 SAS 数据集操作 2014年03月28日 1.合并 2.删选,修改 3.查询 PPT 模板下载:https://www.wendangku.net/doc/ad17827255.html,/moban/

1 数据集的合并: (1)纵向合并:添加或合并样本变量 (2)横向合并:添加或合并(指标)变量

(1)数据集纵向合并:可以添加或合并样本变量 形式: data 合并后数据名; set 数据名1 数据名2 ; run; 例:将名为male、female 的两个数据集纵向合并成一个名为total 的数据集data total; set male female; proc print data=total; run; /*若male 与female 变量名不同则total 的变量名为两者之并,数据值以缺失值形式出现*/

(2)数据集横向合并:添加或合并(指标)变量 形式: data 合并后数据名; merge 数据名1 数据名2 ; by 共有变量名; run; 例:将名为dataONE 和data TWO 的两个数据集按共有变量pid 横向合并成数据集total2 (以下程序以data total2 名义保存)

data one; input pid sex$ age; cards; 101 m 54 105 w 36 102 m 43 104 w 45 ; data two; input pid weight height; cards; 105 54 163 102 63 174 103 57 173 104 45 156 ;

proc sort data=one;/*必须先对共有变量(本例中pid)分别排序才能横向合并*/ by pid; /* 排序语句proc sort data=被排序变量所在数据集名; by 被排序变量名;排序时默认数值由小到大字母由先而后*/ proc sort data=two; /*必须先对共有变量(本例中pid)分别排序才能横向合并*/ by pid; /*以下为合并过程*/ data total2; /*合并后数据名*/ merge one two; /*形式: merge 被合并数据集名1 被合并数据集名2; */ 注意输出结果中的缺省值,输入数据时若有缺省分量一定要以. 表示,否则SAS 会将该行数据自行删除*/ by pid; proc print data=total2; run;

sas数据集例题

试 验目的本实验主要练习数据集的导入和导出,建立、删除和保留变量、数据集的合并与拆分,排序、转置等操作。 掌握从已有数据文件建立数据集以及在已有数据集的基础上建立、删除变量; 掌握sas的程序控制的三种基本控制流; 掌握数据数据修正、排序、转置和标准化的过程或语句。 实验内容完成下列各题 一.某班12 名学生3 门功课成绩如下: 用sas的data步建立数据集。 筛选出有一科不及格的学生。 计算每人平均成绩,并按五级制评定综合成绩。 二.教材P141的6,7题。 三.data2_1.sav和data2_2.sav是一组被试(编号1-47)分别做两个量表数据,请把它们合并起来,保存为“量表.sav”,data2_3.sav是另一组被试(编号48-65)做成量表的数据,请把这些数据加到“量表.sav”里,并保存。 1)a1、a5、a30、a43、a49和b2、b6、b19为反向计分,把他们转化为正向。 2)data2_1.sav和data2_2.sav是一组被试(编号1-47)分别做两个量表的 数据,请把它们合并起来,保存为“量表.sav”,data2_3.sa v是另一组被试(编号48-65)做成量表的数据,请把这些数据加到“量表.sav”里,并保存。 3)a1到a25为a量表的第一个维度,a26到a50为第二个维度,b量表只有 一个维度,分别求出三个维度的总分(即所有项目得分相加)。 4)把b量表总分按照从小到大的顺序排列,设置另外一个变量(group),b 量表得分前十名赋值“1”,标签为“高分组”,后十名赋值“3”,标签为“低分组”,其它赋值“2”,标签为“中间组”。 5)各维度总分中如果有缺失,请用该维度的平均分进行替换。

SAS介绍和SAS数据集

SAS系统
SAS系统介绍
SAS系统是用于数据分析与决策支持的大
邓 伟 2013.11 wdeng@https://www.wendangku.net/doc/ad17827255.html,
型集成式模块化软件包。 其早期的名称Statistical Analysis Software 统计分析软件→大型集成应用系统 商业智能(BI)和分析挖掘(DM)
1
2
SAS系统是用于决策支持 的大型集成信息系统
SAS系统主要完成以数据为中心的四大任务: 数据访问 数据管理 数据呈现 数据分析
SAS历史
SAS成立于1976年,是全球最大的私人软件公司(预 打包软件),全球十大独立软件供应商之一 1966年 美国北卡州立大学 Jim Barr and Jim
Goodnight
1972年 推出SAS72供大学使用 1976年 创立公司
SAS软件研究所(SAS Institute Inc.) 举办第一个SUGI (SAS Users Group International) 会议 Base SAS 软件上市 与IBM建立合作伙伴关系
3 4
SAS历史
1985 第一个PC DOS SAS System 版本(Base SAS 和SAS/RTERM 软件)取得成功 1986面向个人计算机的SAS/IML 和SAS/STAT 软 件上市 1992
决策支持功能扩展到以下领域:指导性数据分析、临床 试验分析和报告、财务电子表格和英语查询 SAS第一个垂直市场软件:制药行业的临床审查系统上 市
SAS历史
1995 SAS 成为真正的端到端数据仓库解决 方案唯一的供应商,推出Rapid Warehousing Program 1999 美国食品和药品管理局选择SAS开发的 技术,作为接收和归档电子数据的标准
5
6
1

SAS EG数据统计分析题库

《SAS EG数据统计分析题库》 单选题 1、分析教师和会计师之间收入的差异,选择什么分析方法最合适? A、卡方分析 B、方差分析 C、两样本T检验 D、相关系数 答案C 2、分析购买不同产品的频次时,使用以下哪个任务? A、列表数据 B、汇总表 C、汇总统计量 D、单因子频数 答案D 3、以下哪个语句可以将字符型数值date(示例:“2001-02-19”)转换为数值类型? A、INPUT(date,YYMMDD10.) B、PUT(date,YYMMDD10) C、INPUT(date,YYMMDD10.) D、PUT(date,YYMMDD10)

答案A 4、来自于总体的样本最主要的属性是什么? A、随机 B、有代表性 C、正态分布 D、连续分布 答案B 5、D—W统计量用于检验? A、异方差 B、自相关 C、解释变量线性相关 D、扰动项不服从正态分布 答案B 6、什么统计量用于检验解释变量之间线性相关 A、标准化的残差 B、D—W统计量

C、Cook's D D、膨胀系数 答案D 7、连续变量右偏的情况下,中位数在均值的? A、左边 B、右边 C、相等 D、无法判断 答案A 8、代表变量离散程度的指标是? A、均值 B、标准差 C、最大值 D、中位数 答案B 9、解释变量是多分类变量,被解释变量是连续变量,使用什么分析方法?

A、卡方分析 B、方差分析 C、两样本T检验 D、相关系数 答案B 10、如果在方差分析中有20个观察值,你要计算残差。那么以下哪个值会是残差和? A、-20 B、0 C、400 D、从已知信息中无法推断 答案B 11、要进行一项研究,比较男女月均信用卡支出。可能使用哪一种统计方法? A、单样本T检验 B、双样本T检验 C、单因素方差分析 D、双因素方差分析 答案、C

常用sas语句总结

Engine(引擎)是一种访问架构,SAS系统通过它迅速地对其它数据库管理系统中文件进行读入和写出。 1.LIBNAME语句 1.1解读 定义SAS 逻辑库。具体地说,它可以 (1)向SAS 标识SAS 逻辑库 (2)将引擎与逻辑库关联 (3)让您指定逻辑库的选项 (4)为逻辑库指定逻辑库引用名 通俗得讲,LIBNAME语句把一个libref(库标记名)和一个目录联系起来,使用户可以在SAS语句中使用库标记来指示这个目录。提交该程序时自动引用该SAS 逻辑库 1.2 语句格式 1、LIBNAME libref <'SAS-data-library'>; 2、LIBNAME libref Clear; 3、LIBNAME libref |_ All_ List; 三种格式反映了LIBNAME语句的三种用法

选项说明 2.length语句 SAS变量的基本类型有两种:数值型和字符型。数值型变量在数据集中的存贮一般使用8个字节。SAS的字符型变量缺省的长度是8个英文字符,可以使用LENGTH语句指定变量长度,LENGTH语句一般应出现在定义变量的Input语句之前,格式为:LENGTH 字符型变量名$长度 例如:length name $20 ; 3. input 语句 3.1解读 INPUT语句用于向系统表明如何读入每一条记录。它的主要功能有:读入由语句指定的数据列;为相应

的数据域定义变量名;确定变量的读入模式(共有四种模式:column模式,formatted模式,list模式及named模式)。 input语句执行后,SAS将读取的数据暂时先保存在内存缓冲区,然后执行后面的语句,后面的语句可以对暂存在内存缓冲区中的变量值进行修改,到最后才将整条数据写入数据集,写入数据集的数据就不能在当前data步中再修改。 注意:INFILE语句用于确定一个包含原始数据的外部文件,必须在执行INPUT语句前执行,如果要在程序中直接嵌入数据,就用CARDS语句代替INFILE 语句。 3.2 语句格式(Column模式) INPUT variable <$> start-column<-end-column><.decimals><@|@@>; 说明: variable 变量名 $ 跟在变量后面,表明这个变量是字符型变量 start-column 起始列号 end-column 结束列号,如果变量值只包含一列,则可省略 .decimals 如果输入值中没有包含一个隔开整数部分

SAS例题及程序输出

地质勘探中,在A,B,C 三个地区采集了一些岩石,测量其部分化学成分,其 数据见表3.5。假定这三个地区掩饰的成分遵从()3,(1,2,3)(0.05)i i N i μα∑==() 。 (1)检验不全01231123:=:,,H H ∑=∑∑∑∑∑;不全等; (2)检验(1)(2)(1)(2)01::H H μμμμ=≠;; (3)检验(1)(2)(3)()()01::,i j H H i j μμμμμ==≠≠;存在使。 表3.5 岩石部分化学成分数据 解: (1)检验假设

01231123:=:,,H H ∑=∑∑∑∑∑;不全等, 在H 0成立时,取近似检验统计量为2()f χ 统计量: ()()*4=121ln d M d ξλ-=--。 由样本值计算三个总体的样本协方差阵: 1(1)(1)(1)(1) 11()() 11111110.243081=0.642649.2855240.014060.020520.00452n S A X X X X n n ααα='==----?? ?- ? ??? ∑()(), 1(2)(2)(2)(2) 23()() 12211116.30461= 4.756710.672230.05570.23880.006675n S A X X X X n n ααα='==----?? ?- ? ?-??∑()(), 1(3)(3)(3)(3) 33()()1 3311112.97141=0.63370.342140.00010.002950.001875n S A X X X X n n ααα='==----?? ? ? ?-?? ∑()()。 进一步计算可得 1231 0.0018318,0.0000942,0.0011851,0.0000417,10 S A S S S = ==== 24.52397,0.433333,12,M d f === (1)=13.896916d M ξ=-。 对给定显著性水平=0.05α,利用软件SAS9.3进行检验时,首先计算p 值: p =P {ξ≥13.896916}=0.3073394。 因为p 值=0.3073394>0.05,故接收0H ,即认为方差阵之间无显著性差异。 proc iml ; n1=5;n2=4;n3=4; n=n1+n2+n3;k=3;p=3; x1={47.22 5.06 0.1, 47.45 4.35 0.15,

SAS复习总结

蔡泽蕲 Freq 过程: Proc Freq data=dataset; table x*y/option; By var1; Class var2; Weight f; Run; 输出x*y的频数表,by语句的使用要求var1已经排过序. option可为chisp,分析x、y(两独立样本)的不同水平的差异是否显著,卡方检验。当x、y为两配对样本时,option为agree,进行配对样本差异是否显著的检验。 Sort 过程: Proc sort data=dataset out=dataset; By (descending) var1 (descending) var2; Run; 对数据集中的var1、var2变量依次排序,默认从小到大,descending为从大到小。缺失out 时新数据集覆盖原数据集。 Means 过程 Proc means data=dataset option; Var x; By var1; Class var2; Freq var3; /*不能用weight*/ Output out=输出数据集统计量名=自定义名; Run; 输出option统计量,当包含t和prt 时输出x的期望为0的t检验,用于配对样本的t检验。无option时,默认输出N、std、mean、min、max五个统计量。还可输出其它很多统计计量。特别的两个选项:maxdec=n ,alpha=value分别指定结果保留位数和置信度 Univariate 过程 Proc univariate data=dataset option; Var x; By var1; Freq var2; Output out=输出数据集统计量=自定义变量名; Run; Option 可为freq(生成频数表)、normal(检验变量是否服从正态分布)、plot(生成茎叶图、箱线图、正太概率图)、cibasic(计算均值置信区间)、cipctldf(计算中位数置信区间)。 统计量可为:各检验统计量及分位数。 当option为“mu0=scalar”时,计算x的期望(中位数)为scalar的t检验和符号秩和检验。符号秩和检验适用于非正太样本,而t检验则用于正太样本。配对样本计算配对差,独立样本使用class。Cibasic基于正太分布,cipctldf基于非正态分布。

sas习题大全带程序编码资料

P265 1 今有某种型号的电池三批,它们分别是A、B、C三个工厂所生产的,为评比其质量,各随机抽取5只电池为样品,经试验得其寿命(h)如下: A B C 4042 4845 38 2628 3432 30 39 50 40 50 43 试在显著性水平0.05下检验电池的平均寿命有无显著的差异,若差异是显著的, 试求均差μ A -μ B ,μ A -μ C 和μ B -μ C 的置信水平为95%的置信区间。 代码: data l1; do b=1to5; do a=1to3; input x@@; output; end; end; cards; 40 26 39 42 28 50 48 34 40 45 32 50 38 30 43 proc anova; class a; model x=a; run; 结果输出: The SAS System 19:15 Friday, April 9, 2012 5 The ANOVA Procedure Class Level Information Class Levels Values a 3 1 2 3 Number of observations 15 The SAS System 19:15 Friday, April 9, 2012 6 The ANOVA Procedure Dependent Variable: x

Sum of Source DF Squares Mean Square F Value Pr > F Model 2 615.6000000 307.8000000 17.07 0.0003 Error 12 216.4000000 18.0333333 Corrected Total 14 832.0000000 R-Square Coeff Var Root MSE x Mean 0.739904 10.88863 4.246567 39.00000 Source DF Anova SS Mean Square F Value Pr > F a 2 615.6000000 307.8000000 17.07 0.0003 结论:结论:在显著水平为0.05下0.0003<0.05,所以各个总体均值间有显著差异。 代码: data l1;p265 1 (ua-ub) input lei n; do rep= 1to n; input x@@; output;end; cards; 1 5 40 42 48 45 38 2 5 26 28 34 32 30 ; proc ttest; class lei; var x; run;

SAS系统和数据分析SAS数据集的编辑

第十一课SAS数据集的编辑 通常从外部数据源转换得到SAS数据集后,并不是所有的数据集都满足统计数据要求,可立即调用统计过程进行统计分析。需要对数据集进行满足统计数据要求的编辑或生成新的数据集。 一、增加数据集一个新变量 SAS系统可通过赋值语句把包含操作符的表达式赋值给数据集所要创建的新变量。SAS 的表达式中还可以包含SAS函数,如一些常用的SAS函数见下表: 函数分类常用函数功能 数学运算函数ABS( ) 取绝对值 SQRT( ) 求平方根 INT( ) 取整数部分 EXP( ) 计数e的次幂 LOG( ) 求e为底的自然对数SIN( ) 计算正弦 LAGn( ) 求给定变量滞后为n的值 统计计算函数MAX( ) 求最大值 MIN( ) 求最小值 MEAN( ) 求平均值 SUM( ) 求和 DIFn( ) 求给定变量X的第n阶差STD( ) 求标准差 PROBNORM( ) 标准正态分布函数 日期时间处理函数DA TE( )/TODAY()取当日的日期值DAY( ) 计算某月的那一日HOUR( ) 计算小时 TIME( ) 取当日的时间YEAR( ) 取年值 字符函数INDEX( ) 搜寻字符串的位置LEFT( ) 字符串表达式左对齐SUBSTR( ) 抽取子字符串TRIM( ) 移走尾部空格LENGTH( ) 给出字符变量的长度UPCASE( ) 转换为大写 财政金融函数COMPOUND( ) 计算复利 IRR( ) 计算内部赢利率 NPV( ) 计算净现值 SA VING( ) 计算定期储蓄的本金和利息

例如,有一个学生成绩数据集中的数据来源写在CARDS语句后,但我们还需产生新的变量平均分和总分,数据步的程序如下: Data class2 ; Input id test1-test5 ; average=mean(test1,test2,test3,test4,test5); total=test1+test2+test3+test4+test5; Cards ; 980801 100 100 100 100 100 980802 90 100 90 100 90 980803 81 82 83 84 85 Proc print data=class2 ; Run ; 在OUTPUT窗口中显示的运行结果见图11.1所示。 图11.1 用赋值表达式创建数据集的新变量 二、选择数据集的变量和观测 数据库的三种基本操作是选择、投影和连接,如果我们把数据库看成是一张表格,选择和投影操作相当于从一张大的数据库表格中挑选所需的行和列形成一张小的数据库表格。连接操作相当于把两张或两张以上的数据库表格按某种规则合并成一张数据库表格。原始数据库表格可以是外部数据文件(用INFILE语句输入),或在作业流中(用CARDS语句输入),或来自其他SAS数据集(用SET语句输入)。 1.选择变量(即选择列) 使用DATA语句的DROP=和KEEP=选项可以控制从原始数据库中读出的变量是否被写入将要创建的数据集。

SAS将proc步的输出导出为数据集

SAS将proc步的输出导出为数据集 sas的各种proc步,例如corr univariate,运行完之后都会在结果(result)与输出(output)中显示,下面的方法是将proc步的输出变成sas数据集。 需要用到ods语句 ods listing close;该语句的作用是使得proc步的输出不在output中显示 ods results off;该语句的作用是使得proc步的输出不在results中显示 proc univariate data=sashelp.class; var age; run; ods results on; proc步结束后重新打开results和listing ods listing;

ods output语句的功能是将输出窗口output的输出对象转化成sas数据集,使用如下: ods listing close; ods results off; ods output basicmeasure=bm; proc univariate data=sashelp.class; var age; run; ods results on; ods listing; 该程序的作用是将proc过程的基本测度对象basicmeasure 输出到数据集bm中。 可以通过ods trace语句知道输出管道的对象: ods listing close; ods results off;

ods trace on; proc univariate data=sashelp.class; var age; run; ods trace off; ods results on; ods listing;

sas要点

; 循环体 ;end ; SAS 特有的循环语句) =值1,值2,…, end ; 表达式); 循环体 ; 至少执行一次循环表达式); 循环体 在LOG 窗口显示n=0,n=1 ; (n<3); PUT n=; n+1; 循环体 END ; ; (n>=3); PUT n=; ; 循环体 END ; 语句 ; DELETE () , ; 40者的信息 将当前观测送入数据集自动方式和OUTPUT 在数据步程序中不出那么,(一般是RUN 语句)2.利用OUTPUT OUTPUT 语"失效, 通过执行 PROC VAR 变量表; VAR 语句时, 系统依据BY ; BY x ; CLASS 变量表; CLASS 变量1="字符串1" 变量变量n="字符串n" i i 变量; (列)变量; ; 下列程序可以将SAS 数据集又转换dBASE 的库文件: ; ; ; (PLOT) ; ; ; ; ; PROC GPLOT ; PLOT y*x ; RUN ; 过程的格式 选项1; 图形说明1 图形说明2 /选项2; ; 1: 数据集名 指定绘图数据集。 语句后可以有一个或多个图形 为纵轴,x 为横轴,图形用默 "A"形成。 2有: :将PLOT 后的多个图形说明 ;这里的m 和n 是正 m 为指定的每页行数,n 为每行 和n 。 过程格式 选项; 语句;] ; 数据集名 指定被转置的数据 名 数据集被转置后,原 ?本选项中的“SAS”名就是为新变 SAS 名”后接自然数来 数据集名 给定转置后的新数 DATAn 。 名 SAS 名将作为转置后的 其值为原数 _NAME_的变量。 关键字(Keywords 或 Reserve )是系, 如例中PUT 、、FORMAT 、PROC 、 INFILE 和DO 都是SAS 语句除了赋值、累加、注释、 名(SAS Name ) 后跟字母、数字或下 SAS 名中出现。 名可能是变量(32个字符),数据集32个字符),输出格式(C :31 N :),过程(16),数组(32),逻辑库8)和文件逻辑(8)等的名字标识符。 语句是以SAS 关键字开头,由SAS 名、特 一个语句可以写一行或多行,但要以 多条语句可以写在一行, SAS 语句对英文字符不区分大小写。 便于程序阅 格式: 变量=表达式; 而后 格式: 变量+表达式 ;语句的功能是先计算 再将变量的当前值和表达而后将二者之和赋给变量。当为新引入的变量时,语句x=x+1 不能代x+1,因为前者的x 初始值是缺项值0。

SAS学习系列10. 合并数据集

10.合并数据集 一、用SET 语句拼接合并数据集 用SET语句可以把两个数据集拼接合并在一起,适用于两个数据集具有相同的变量。 基本形式为: data 新数据集名; set 旧数据集1 旧数据集2; 注:(1)按原来顺序合并成新数据集(数据集1在上,2在下); (2)若一个数据集包含了另一个数据集没有的变量,那么合并后,该变量下将会出现缺省值。 例1路径“C:\MyRawData\”下有关于娱乐公园南北门游客的数据South.dat 和North.dat,都包括变量Entrance、PassNumber、PartySize、Age,后者多了一列Lot(停车): 先分别读入数据存为数据集再合并成一个新数据集,并创建了新变量,AmountPaid.

代码: data southentrance; infile'c:\MyRawData\South.dat'; input Entrance $ PassNumber PartySize Age; proc print data = southentrance; title'South Entrance Data'; run; data northentrance; infile'c:\MyRawData\North.dat'; input Entrance $ PassNumber PartySize Age Lot; proc print data = northentrance; title'North Entrance Data'; run; data bothentrance; set southentrance northentrance; if Age =.then AmountPaid =.; else if Age < 3then AmountPaid = 0; else if Age < 65then AmountPaid = 35; else AmountPaid = 27; run; proc print data = bothentrance; title'Both Entrances'; run; 运行结果:

相关文档