-- 查询 SAS 已安装模块
proc setinit noalias;
run;
在DATA中可以使用SET、MERGE、MODIFY或UPDATE语句对数据集进行加工。
a、选取部分变量:
1、在 SET 语句中使用
data work.shos_part1;
set sashelp.shoes (keep=Product Sales)
run;
当然使用 DROP= 可以起到同样的效果。
2、在数据集选项中使用 KEEP= 或 DROP=
data work.shos_part1 (keep=Product Sales);
run;
*两种方法虽然起到的效果是一样的,但由于在 SET语句中使用 KEEP= 是把所选定的变量读入PDV,而 数据集选项 KEEP= 语句是把所有的变量读入PDV,在读取数据进行筛选,所以在进行大规模数据运算时, SET语句 KEEP= 选项方法效率更高。
3、使用 KEEP 或 DROP 语句
data work.shos_part1;
set sashelp.shoes;
keep Product Sales;
run;
drop 语句同样也行。
b、 SAS 操作符:
运算操作符
比较操作符
逻辑操作符
其他操作符
c、选取部分观测:
在建立新数据集时,有以下两种方式可以通过已有的数据集选取适合的观测记录到新数据集:
1、只选择满足条件的观测
2、删除不符合条件的挂测
1、使用 DELETE语句删除不满足条件观测:
data work.address;
set saslib.contact;
if address = "" then delete;
run;
2、使用 IF 语句选取满足条件的观测:
data work.manager;
set saslib.contact;
if position='Manager' ;
run;
3、使用 output 语句建立多个数据集:
使用OUTPUT语句将符合条件观测写入到数据集,其数据集必须是data步中出现的数据集
data work.contact_manager;
data work.contact_others;
set saslib.contact;
if position='Manager' then output work.contact_manager;
else output work.contact_others;
run;
操作所选取观测对应的变量:
data work.inventory2;
set saslib.inventory;
if region='BJ' THEN price = price * 1.2;
else price = price * 1.05; #无 else 语句也行
run;
do 语句:根据 if 条件执行 do 语句组合
data work.inventory4;
set saslib.inventory;
if region='BJ' THEN do;
Price = Price * 1.3;
Instock = Instock * 2;
END;
else do ;
---------
end;
run;
分组与排序 --- sort 过程
分组之前必须排序。
proc sort data=sashelp.class out=class_qw;
by sex height /* 分组项必须在排序里面 */
run;
data work.class_qw; /* 获取第一个和最后一个项 */
set work.class_fl;
by sex;
if first.sex or last.sex;
run;
变量重命名: rename语句和 rename= 选项 -- 3种方法
data newanme (rename=(name=full_name));
set sashelp.class (rename=(name=full_name));
rename name=full_name;
run;
** 数据集选项 rename= ,新变量名在data步中就已经导入 PDV 中,如在data 中 需要使用 该变量时应用新变量名称;在其他方法中,由于其是在输出数据集时改变变量名,因此在data步中使用该变量时,还是用旧变量名称。
--SAS使用已有变量进行运算可直接创建新变量
--累加求和
data ex2;
set ex1(obs=5);
total_age+age; /* only use the way or use retain state */
run;
---- 未完待续