数据集整理:
目的:对数据集中的数据进行预处理,使数据更适合统计分析过程对数据格式的要求;
常见整理要求:
1)建立新的变量,衍生变量,删除某些原变量;
2)求子集;
3)矩阵和数组变换(例如转置); # 行变列、列变行
4)排序;
5)分组; # 类似SQL语句中的SQL;
6)数据集连接;
7)数据集合并;
8)写入文件;
用赋值语句建立衍生的新变量:
代码说明:
1)z=x+y;y=y+1; 是赋值语句;
2)@@ 表示读数据不换行;
代码说明:
1)求和,没有写S=0,因为每次循环读的话,S都会被赋值为0,反而不对;
2)从结果,我们还是很好理解S+X的意思。就是S=S+X;S+X是简写;
3)就是对X进行不断的求和;
RETAIN语句:
用于给变量赋初值,并且使变量保持其变化。
一个很好说明问题的例子:
代码说明:
1)z=0;可以看到z的值,就是z的值;
2)s的值是x的求和;
3)关键是y初值为8,每次循环,y都会把x加上去。第二次循环的时候,retain不会被执行,y会保留上面的值。这个跟求和有区别。这个retain可以给y赋予初值。
删除变量:DROP语句:
代码说明:
1)total=sum(s1,s2,s3): 增加了一个total变量;
2)然后再将s1, s2, s3Drop掉了。
保留变量:KEEP语句:
代码说明:
1)KEEP保存什么变量。
2)set score:上一个已有的数据集;
3)keep name mean; 需要name,mean,其他的自然被我删除掉了。
4)mean=total/3; 求平均。
条件语句:IF-THEN:循环语句,数组
条件语句:IF-THEN
代码说明:
1)data score1: 目标数据集;
2)set sp.score: 是打开sp.score为当前数据集;这个数据集中包含了num/name/Computer/C_Language/English/ave
3)if语句的意思:判断ave是否大于85分,在观测行中观察进行判断,然后put语句输出语句,缺省是输出到日志窗中输出学号,名称和平均分。
条件语句:IF-THEN-ELSE:这是一个双分支的语句:
注意的是,在Then和else之后只允许使用一个语句,如果当条件成立时要执行几个语句,则应该把要同时执行的几个语句用do-end括起来。
求子集IF语句:
代码说明:
1)data child; 这是在读数据;
2)我们要产生婴儿数据集,获得月份小于12的婴儿,相当于做了一个筛选;只要写上if语句进行筛选;SAS另外还可以加where语句;where语句看朱世武的书;SQL在制定语言的标准是参考了SAS的用法。SAS的影响力是非常大的。where作为课后的阅读作业;
删除观测值:DELETE语句:
代码说明:
1)delete是删除行;
2)do-end; put num,在日志窗中输出学号。然后删除此观测值;
循环语句:
GOTO实现的循环
DO/END循环
DO WHILE 循环
DO UNTIL 循环
在SAS中有非常丰富的循环语句用法。
GOTO语句:
代码说明:
1)goto语法是在C语言中包含,但是在编程中是要尽量避免使用goto语句。计算机科学家不要用goto语句,使得代码非常难读。
2)在K:冒号后面要有空格,才行,不然会有报错。调试的时候需要注意下。
DO/END循环:
整个循环体只产生了一个观测,它是循环结束时循环变量的取值。如果要每次循环都往数据集里输出数据,可以使用output语句。(包括前面goto实现的循环也是这样。)
代码说明:
1)这个类似其他语言的for循环语句,我们指定了循环变量,指定一个变化的范围和步长。SAS指定这些内容还是比较灵活的。
2)1 to 8 by 2: 1 3 5 7
3)16 to 18: 16 17 18
do while 循环体:
代码说明:
1)LT: 小于5。
2)put:默认输出到日志窗口。
OUTPUT语句:
代码说明:
1)put是直接输出到日志窗口;
2)output:就是把当前的变量往数据集中写,生成一个观测行,每次都会生成一个观测值。显示地显示的输出。
DO UNTIL循环:
代码说明:
1)当条件成立的时候,我们就退出循环;
2)while是当条件成立的时候,就执行循环;
代码说明: