Search for
Login | Username Password Forgot? | Email: | Create Account
Non English | Popularity: 0 | Entries: 63 | Updated: 2h 33m ago | | Add to My Feeds
SAS数据集更新
November 3rd, 2010

当我们需要对数据集中的某些数据进行更改时,可以使用如下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的任务。

或许你会对下面这些文章感兴趣:

  • 2010年10月22日 -- SAS数据集拆分与合并
    原始数据集DALL: Obs a b c ...
  • 2010年09月17日 -- SAS过程步常用语句一
    SAS过程步常用语句一...
  • 2010年09月9日 -- SAS循环结构
    SAS 数据步可以使用丰富的循环结构,主要的是两种:计数DO循环和当型、直到型循...
  • 2010年08月21日 -- SAS分支结构之SELECT
    SAS的IF结构允许嵌套,但SAS不提供IF-ELSEIF-ELSE的多分支结构...
  • 2010年08月19日 -- SAS分支结构之IF
    如果需要在某一条件满足时执行某一操作,可以使用: IF 条件 THEN 语句;...
  • 2010年08月10日 -- SAS语言构成
    SAS程序由SAS语句构成。像其它高级编程语言一样,每个语句以分号结尾。SAS语...
  • 2010年08月9日 -- Hello SAS
    SAS程序代码: data; title www.ineeke.com;...



More from Neeke's Blog

十日杂谈 10 Dec 3
SAS数据集更新 10 Nov 3
SAS循环结构 10 Sep 9
拒绝鼠标手 10 Sep 1
Hello SAS 10 Sep 1
SAS语言构成 10 Sep 1
九月的第一篇 10 Sep 1

^ Back To Top