SAS 编程技巧 - PROC SQL(二)

C++++ / 2023-08-01 / 原文

上一节中,我们介绍了如何使用 SQL 创建和删除数据集、视图和索引。这一节我们介绍如何使用 SQL 修改数据集的结构和更新数据集中的数据。

修改数据集结构

使用 ALTER TABLE 可以修改数据集的结构,包括增加、删除变量、修改变量属性,以及对数据完整性约束(integrity constraints)的操作。

数据完整性约束涉及到较高级的概念,我们将在未来的章节中介绍它,这一节我们只介绍对变量的增加、删除和修改操作。

新增变量

使用 ADD 子句可以新增一个变量,我们可以在新增变量的同时指定变量的属性。

proc sql noprint;
    alter table dm
        add BRTHDAT num label = "出生日期" format = yymmdd10.;
quit;

上述代码在数据集 DM 中新增了一个变量 BRTHDAT,并指定了标签和输出格式。

可以在一个 ADD 子句中新增多个变量:

proc sql noprint;
    alter table dm
        add BIRTHDAT num      label = "出生日期" format = yymmdd10.,
            RANDDT   num      label = "随机日期" format = yymmdd10.,
            RNUMBER  num      label = "随机号",
            ARM      char(10) label = "组别";
quit;

img

删除变量

使用 DROP 子句可以删除一个变量,用法与 ADD 子句类似。

proc sql noprint;
    alter table dm
        drop BIRTHDAT, BMI;
quit;

注意:删除某个变量时,使用该变量定义的索引(包括简单索引和复合索引)都将一并被删除。

修改变量属性

使用 MODIFY 子句可以修改一个变量的属性,用法与 ADD 子句类似。

proc format;
    value $sex
        "M" = "男"
        "F" = "女";
run;

proc sql noprint;
    alter table dm
        modify RANDDT format = e8601da10.,
               SEX    format = $sex.;
quit;

上述代码修改了数据集 DM 中变量 RANDDT 和 SEX 的属性,分别将它们的输出格式修改为 e8601da10.$sex.

注意:ALTER TABLE 语句无法修改变量名和变量长度,如需修改这些属性,请使用 CREATE TABLE 或 SELECT 语句完成,这将在未来的章节中进一步介绍。