您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 转:SAS工具的使用简介
  所属分类: 其它
  开发工具:
  文件大小: 2mb
  下载次数: 0
  上传时间: 2019-03-23
  提 供 者: weixin_********
 详细说明:NULL 博文链接:https://xuan0506.iteye.com/blog/104158751变量和观测的选择 147 6 Philip M 16 150.0 7 Abert. 12 64.8 1金.0 h。mag 57,5 10 william 66.5 112.0 /对DAT∧语句使用选项 WERE* data class where =(agc>14)) shelp cla un 0b詈 Name Se ge Height weight F 62.5 112.5 Mary F 15 66.5 112.0 Philip M 72.0 150.0 Ronald M 15 67.0 133.0 5 William M 15 665 1120 /对SET语何和DATA语何都使用选项 WHERE* class( whcrc (age> set sashelp class(where =(sex =MD run ↓ Heigl ight Philip 阿 16 15 67,Q 3 百111ianm 112.0 IF语句与 WHERE选项都可在数据步执行的不同环节选择观测 SET语句中使用选项 WHERE,它在数据记入PDV之前,效率是最高的. IF语句是面向PDV的,所以在它的表达式中可以包含PDV中的内部变量,如N等 ●DATA语句中使用 WHERE语句是在写入数据集之时,所以在表达式中可以使用加工 过程中新生成的变量,按生成变量的值来选择观测 与SE语句使用选项( WHERE=)类似的是使用如下的wHEE语句. WHERE表达式; 它只挑选使表达式成立的观测进入PDV.在数据步程序要读入多个数据集时: WHERE语 句对所有读入的观测进行挑选此外,在大多数过程步程序中,也可以使用 WHERE语句对 读入PDV的观测走行挑选 148 第五章数据加工 读人数据集选项OBS=和 FIRSTOBS 对于读入数据集,例如在数步中SF语句后的数据集,要选择观测,除了选项 WHERE 外,还有 FIRSTOBS=和OBS=.它们的一般形式为 IFIRSTOBS =n1)OBS n2)) 它表示只读入源数据集从第n1条记录开始到第n2条记录那一部分进行加工,若不用选 项‘ FIRSTORS〓1,表示按其蚀省值由第一条记录开始读入.若不用选项OR=m2,就读 入至源数据集的最后一条记录 以下是使用这些选项的例子 在SET语何使用选项 FIRSTOBS和OBS+ data clas et sashelp class(firstobs =4 obs = 10) run Name Sex Age Height Weight lenny 14 102.5 James MMFFMM 12 12 59.8 84.5 Janet 62.5 LL2.5 Jeffrey 84.0 John 12 59,0 99,5 若将上述数据集 class与 Sashelp Class的观测进行比较,可以看出前者只含后者的第4 条至第10条记录 514按变量值对数据集排序 为了将数据集的记录按某个变量例如地区,产品类型的不同值分别进行统计或制作报表 和图形,在SAS中往往需要将数据集按该变量的值进行排序,把该变量值相同的记录存放于 相邻的位置,便于分组进行统计和分析,过程SOBT就能实现按某个或某几个变量的值对数 据集进行排序,它的一般形式为 PROC SORT DATA=数据集名(OUT=输出数据集名} BY/ Descending)变量名列〈 Descending〉变量名列 RUN: 其中 DATA=数据集名:指明要进行排序的数据集 ΩUT=输出数据焦名:指明存放排序后数据集的名称·由于数据集经过排序后将改变原有 数据的次序,也未必能恢复原有次序.所以一般会将排序后的数据存放在一个不同的 51变量和观测的选择 149 数据集中若不写OUT≡,则排序后的数据将替代原有的数据存放在原来的位置 BY语句:指明排序依据的变量.在变量名前加了 Descending则按该变量的降序排列.否则 按该变量的升序排列,若BYi句中设定了多个变量,则先按第一个变量排序,在第 个变量的值相同时按第二个变量的升序或降序排序.前几个变量值相同时就按下 个变量的值排序 过程SOPT有如下特性: 对SAS数据集中的观测按BY变量值的次序进行重排 将重排的结果创建一个新的SAS数据集 若在过程SORT的语句中不使用选项OUT=,则缺省地新建的数据集将置换原有的数 据集 可以按多个变量的置进行排序 可以按升序或降序进行排序 不产生打印输出结果 缺失值将被视为最小的值 例如对数据集 Sashelp Class按变量AGE升序排序的程序和结果为 proc sort data sashelp Ipclass out= sorted run Name Sex Age Height Weight Joyce 51.3 50.5 85.0 M 12 57.3 33,0 Ronald 1330 18 Hilliam 15 66.5 112.0 19 111p M 150.0 若要将数据集 Sashelp class按Age的降序进行排序,且Age值相同的记录按 Height的 降序排列.则可使用下列程序 proc sort data= sashelp class out=sorted t by descending age descending height Dataset Mork. s Nar Sex Age Heigh Height 150 第五章数据加工 1 Philip M 72.0 150,0 2 Ronald M 13s,0 3 Mary 15 66.5 112.0 LouisE 18 Thomas M 11 51.5 3b,0 19 oYCe 51.3 50.5 52用SAS语句建立新的变量 在上一节的数据加工中,介绍了变量和观测的删除.这是对数据集做减法.有时,已 有数据的观测没有直接提供业务需要的信息.这时就需要修改已有的显示形式或创建新的变 量,常用的是在数据步中使用赋值语句 35.2.1赋值语句 般形式 赋值语句的一般形式为: 变量名=表达式; 其中 变量名:是一个新的或已有的变量名 表达式:是任何有的表达式,即操作符和操作对象构成的.有的表达式是指按规定的运 算可得到字符或数值的值 赋值语句的作用就是在数据步执行的过程中将按表达式运算得到的值赋予左侧变量名规 定的变量.在第137页的一段程序中就有一个赋值语句 Bonus= Salary*0.08: 它将每条记录中的 Salary(年薪)数值乘以0.08后存入新的变量Boms奖金)之中 賦偵语句只能在教据步中出现,它是不以某个关健字开始的,与其它多数语句在形式上 略有不同. 简单赋值语句 在賦值语句中也可以将一个已有的变量名同时出现在等号的两边.这表示利用已有的变 量(等号右侧的变量)加工后对这变量(等号左侧的变量名)重新赋值 等号右侧的变量是引用已有的变量,所以变量名使用人小写关系不人,但等号左侧的变 量名若是在数据步巾第一次出现的新生成的变量,系统将保留大小写记入数据集(并在显示 时保留记入的大小写,但在引用时仍不区分大小写) 例如 Sashelp class中学生的身高和体重的信息都是英制的,分别为英寸和磅.若要将它 们转为公制的,分别使用米和公斤.以下的程序就是用简单值语句实现这一加工过程 52用SAS语句建立新的变量 151 data cla t ashele, cl height height* 0.0254 weight weight 454: proc print data cl for mat height weight 6.2 TurI 注意在上述程序中的两个赋值语句左侧的变量hegh和 weight是数据集中已有的变量, 所以其大小写不影响变量名的存储.另外在过程PRNT中加入了 FORMAT语句是为了只 保留身高和体重数值的两位小数 ame Sex Age Height eight 51.08 13 3 F 13 44.49 F 14 13 Thomas M 11 146 15 假如要根据数据集中学生的身高体重信息计算体重(以公斤为单位)与身高(以米为单 位)平方之比.以下的程序就用赋值语句建立表小这个指标的新变量Raio data cla shelp.c RaTio=(weight*0.454)(height* 0254)**2 Tun pro t data s class format ratio 6.2 run Name Sex Age Height Weight RaTlo Alice 13 56.5 84.Q 18.52 Barbal F 13 16,14 4 Carol 62.8 102.5 Henry M 63.5 102.5 17,89 11 b,0 19 111am 66.5 112.0 注意在数据步的赋值语句左侧变量名的大小写,由于 RaTio是一个新创建的变量,所以 第五章数据加工 赋值话句中变量名的大小写被存储在数据集中作为缺省的显示形式.此外,在输出的 Height 和 Weight仍是英制的,因为数据步中只在计算Rati过程中实行了转换,并没有将转换的 绪果存入某个变量 例5.1从洛杉矶到达拉斯的航班数据存储在外部原始数据文件 Ifw dat中,它的各个字 段位置如下表所示,从该数据文件创建一个临时数据集 Dfw Lax,并计算每个航班的乘客总人 数存入一个新生成的变量T1之中 数据域变董名列数提类型 航班号 FLIGHT 字符 日期 DATE 4-10 DATE7 目的地 DEST11-13字符 乘客人数 BOARDED14-16数值 转机人数 TRANS1719数值 免费人数 NONREV2022数值 现在要从该数据文件创建一个临时数据集 Dfw lax,并计算每个航班的乘客总人数存入 一个新生成的变量 Tot al之中,.以下就是实现输入和加工的任务.在这个程序的 PRINT过 程步中使用了 FORMAT语句,为的是在输出时将日期用我们习惯的格式显示 data dfwlax nfile dst(dfw) nput flight s 1-3 date date7. dest 5 11-13 boarded 14-16 trans 1/-19 non rey 20-22 Total boarded trans+ nonrev Tun proc print data= dfwlax format date yymmddd 10 run Flight Date Dest Boarded Trans Honey Total LAX 18 2 1990-03-01LAX l35 1990-03-01LAX 145 163 b p21 19-03-01df 134 6 431 1990-03-01 153 14 6 173 114 1990-03-02LAx 119 6 137 459 1990-03-02LAK 148 9 l990-03-02 l13 10 1990-03-02LAX 130 139 921 199-03-02 D 25 157 431 1990-03-02LAX 165 b 6 177 52用SAS话句建立新的变量 153 13 20 14 439 1990 153 172 598 1990-03-03DF 134 150 16 37 1990-03-03LAX 151 12 167 注意卜述数据集的第三条记录,山千变量 Nonrcv的值为缺失值,所以山它相加得到的 绡果Iωta也是缺失值·对此,还有另一种处理方法,就是使用SAS函数SUM我们会在下 面再提到这个例子 使用SAS函数 在上述例子中,赋值语句右侧的表达式使用了四则运算.类似的对字符变量还可以使用 字符的运算.尽管如此,要扩大表达式转换的功能,往往还需要在表达式中使用SAS函数 SAS函数是SAS系统为SAS程序提供的一些现成的计算程序,调用函数可对一个或多 个自变量返回一个值.它为许多计算和数据管理提供一个编程的捷径 调用SAS函数的一般形式为 函数名(自变量1,自变量2, 例如sm(自变量1,自变量2,…)就是一个函数,调用它时返回听有自变量约总和,不 同的两数名有不同的功能,有的要固定的一个或两个自变量,也有的不限制自变量的个数, 自变量可以是: 常变函 数 量 数 表达式 以下是一个组约员工还季的捐献金额 IDNUM Qtr1 Qtr2 Qtr3 qtr 151 10 12 492 22 5112 5132 10 25 为了按上述表生成个AS数据集 Donate并加入个变量Tota表示每个员工全年的 捐献金额,可使用以下的程序: 154 第五章数据加工 data donate in put idNUMs Qtrl-Qtr4 Total sum(gtr 1, qtr 2, qtr3, qtr4): Obs Idnum qtr1 Qtr2 Qtr3 Qtr4 Total cards, 135110121420 113b11121420b6 4822214625 24 221462 b1121f11 35112171717 51 51321025812 451321025 12 r凵n; 注意函数SUM遇到自变量为缺失值时就忽略这个值。所以上面的第三行有三个有效值 得到其和为51 上面用函数SUM的赋值语句也可写为 Total sum(of qtr l-qtr4) 与SM类似的还有MEAN或 AVERAGE),MAX, MIN STD, VAR等在SAS函数中 属于计算统计值的函数·它们对自变量为缺失值时就忽略缺失值而仅对其它有效数值迸行计 算.对例5.1中的程序若使用函数SUM就有如下的结果 例52用SM函数计算例5.1中的乘客总数 data dfwlax: nfile dst(dfw) nput Flight S 1-3 Date date/. Dest 11-13 Boarded 14-16 Trans 17-19 Non rey 20-22 Total sum(boarded trans, nonrev ) roc print data dfwlax; format date yymmddd 10 ↓ Flight Boarded Tl onCe 1141 199-03-01 196 49 19-03-01LA 15b 1:)9-03-01 4 1990-03-01LAX 145 16 921 134 6 451 1990-03-01 LA 14 6 173 1990-03-02 8 7 l48 1990-03-02 DFW 95 113 1990-03-02LAX 139 921 DFh 25 157
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: