FILENAME DATA_SET "/sas/data_set.txt"; DATA _NULL_; SET DATA_SET; FILE DATA_SET LRECL=32767 DLM="|" ENCODING="UTF-8" TERMSTR=CRLF; PUT NAME AGE CLASS_NAME; RUN; /* LRECL:指定读入记录的长度,默认是256 DLM:指定分割符 ENCODING:指定文件编码 TERMSTR:指定记录分隔符 */
SAS 数据集筛选
WHERE子句进行筛选
SAS 数据集筛选可以在DATA步中进行操作,使用WHERE关键字对指定的列的值进行条件筛选,例子如下:
DATA STUDENT; SET STUDENT(KEEP=); RUN; DATA STUDENT; SET SUTDENT(DROP=); RUN; DATA STUDENT; SET STUDENT(WHERE=); RUN;
SAS 循环语句格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
DATA _NULL_; IF CONDITION THEN ACTION; RUN; DATA _NULL_; IF CONDITION THENDO; ACTION; ACTION; ACTION; END; RUN; DATA _NULL_; IF CONDITION THEN ACTION; ELSEIF CONDITION THEN ACTION; ELSEIF CONDITION THEN ACTION; ELSEIF CONDITION THEN ACTION; ELSE CONDITION THEN ACTION; RUN;
SAS 拼表
SAS 拼表过程十分简单,拼表意思就是表A和表B有共同的列,将表根据相同的列拼在一起,跟SQL中的left join和right join还有inner join是一个道理,在拼表之前需要将数据集根据公共的字段排序,需要用到PROC SORT,下面介绍一下PROC SORT
/*left join*/ DATA STUDENT; MERGE A(IN=A) B(IN=B); BY NAME; IF A; RUN; /*right join*/ DATA STUDENT; MERGE A(IN=A) B(IN=B); BY NAME; IF B; RUN; /*inner join*/ DATA STUDENT; MERGE A(IN=A) B(IN=B); BY NAME; IF A AND B; RUN;
/* MERGE:表A(IN=A) 表B(IN=B) BY 后面跟两个表共有的主键 IF 后面跟表关联关系 */