开发工具:
文件大小: 2mb
下载次数: 0
上传时间: 2019-03-23
详细说明: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最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.