SAS基础语句

一、 新建逻辑库

Libname 逻辑库 路径”;

Libname ana “C:\Desktop\SAS培训”;

 

二、 导入数据表

1、 手工导入

直接从文件-导入数据”,从外部导入excelcsv格式的数据表。

 

2、 代码导入

proc import 

datafile="D:\base.csv"

out=ana.limit_base replace;

getnames=yes;/*以第一行为变量名称*/

delimiter=','; /*分隔符*/

GUESSINROWS=225409;/*SAS默认读取前20行判断数据类型,故可能判断错,需将此参数设置大一点*/

run;

 

三、 数据加工(data

1、 复制数据set

Data test1;

Set test;

Run;

 

2、 保留字段keep

Keep 字段名

Data test2;

Set test;

Keep cust_no credit_dna4;

Run;

 

3、 删除字段(drop

drop字段名

Data test3;

Set test;

drop cust_no credit_dna4;

Run;

 

4、 字段重命名rename

Rename 字段名=新字段名

Data test4;

Set test;

rename cust_no=cust_no_1;

Run;

 

5、 字段运算

Data test5;

Set test;

C=a+b;

Run;

 

6、 条件判断(if……then……

If 条件 then 结果

Data test6;

Set test;

If 0<=a<10 then z=”01.[0,10)”;

else if 10<=a<20 then z=”02.[10,20)”;

else if 20<=a<30 then z=”03.[20,30)”;

else z=”04.>=30”;

run;

 

7、 删除记录(delete

Data test7;

Set test;

If a=10 then delete;

Run;

 

8、 筛选记录whereif

1where

Data test8_1;

Set test;

Where x>10;

Run;

 

2if

Data test8_2;

Set test;

Where if>10;

Run;

 

Data test8_3;

Set test;

Z=x+y;

If z>10;

Run;

9、 数据纵向合并(set相当于sqlunion

Data test9;

Set table_1 table_2;

Run;

 

10数据横向合并merge

Merge之前需对数据集按照关联字段进行排序

1)左连接相当sqlleft join

Data test10_1;

Merge table_1(in=a) table_2(in=b);

By cust_no;

If a;

Run;

 

2)内连接相当sqlinner join

Data test10_2;

Merge table_1(in=a) table_2(in=b);             

By cust_no;

If a and b;

Run;

 

3)全连接相当sqlfull join

Data test10_3;

Merge table_1(in=a) table_2(in=b);

By cust_no;

If a or b;

Run;

 

4)排除

数据a中而不在b

Data test10_4;

Merge table_1(in=a) table_2(in=b);

By cust_no;

If a=1 and b=0;

Run;

 

四、 数据分析proc

1、 排序(proc sort

Proc sort data=test out=test1;by cust_no month descending;run;

 

2、 频数分布(proc freq

(1) 单变量频数分布

Proc freq data=test;

table x1 x2;

run;

(2) 多变量频数分布

Proc freq data=test;

table x*y;

run;

3、 一般描述统计(proc means

x分组计算y统计值

Proc means data=test;

Var y;

Class x;

Run;

 

4、 详细描述统计(proc univariate

x分组计算y统计值

Proc univariate data=test;

Var y;

Class x;

Run;

 

5、 sql

proc sql;

create table test5 as

select cust_no

,x1

,x2

From table1 a

Left join table2(drop=x3) b on a.cust_no=b.cust_no;

Quit;

posted @ 2019-04-10 19:32  xitingxie  阅读(2445)  评论(0编辑  收藏  举报