当我们需要对数据集中的某些数据进行更改时,可以使用如下DATA步实现数据集的更新:
DATA 新数据集名; UPDATE 原数据集 更新用数据集; BY 关键变量; RUN;
例如,有DATA_0数据集内容如下:
Obs name sex chinese english math 1 Neeke0 男 78 89 47 2 Neeke1 女 27 83 59 3 Neeke2 男 98 87 24 4 Neeke3 男 57 39 54
现在要将DATA_0中所有人的语文和数学成绩统一改为90分。首先建立一个新的数据集DATA_1:
DATA DATA_1; INPUT name$ chinese math; CARDS; Neeke0 90 90 Neeke1 90 90 Neeke2 90 90 Neeke3 90 90 ; RUN;
接下来使用UPDATE进行更新:
DATA DATA_2; UPDATE DATA_0 DATA_1; BY name; RUN;
上面的更新方法中,其实DATA_0中的数据是没有变的,而是通过DATA_1按照name一一对应的方式替换了相应的成绩并建立了新的数据集DATA_2。
这个方法似乎有些麻烦,如果能够像SQL中的UPDATE一样就简单多了。当然!在SAS中我们是可以使用SQL语句的!
SAS系统首先是一个数据管理系统,因此它除了可以用SAS语言程序管理SAS数据库、数据集外,还提供了其它大型数据库管理系统(如Oracle、Sybase)通用的SQL语言功能。在SAS系统中SQL语言实现在SQL过程中。SAS 的SQL过程可以从一个或多个表中查询信息,生成表,向表中插入行,更新表的内容,对表进行纵向合并、横向连接等等。例如:
PROC SQL; UPDATE DATA_0 SET chinese = 90, math = 90; RUN;
该SQL过程就完成了上面DATA步的UPDATE的任务。

