设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2298|回复: 0

SAS基础语句

[复制链接]

30

主题

284

金钱

420

积分

入门用户

发表于 2019-10-30 15:21:53 | 显示全部楼层 |阅读模式

SAS基础语句

一、 新建逻辑库

Libname 逻辑库名 “路径”;

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



二、 导入数据表

1、 手工导入

可直接从“文件-导入数据”,从外部导入excel、csv等格式的数据表。



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、 筛选记录(where、if)

(1)where

Data test8_1;

Set test;

Where x>10;

Run;



(2)if

Data test8_2;

Set test;

Where if>10;

Run;



Data test8_3;

Set test;

Z=x+y;

If z>10;

Run;

9、 数据纵向合并(set,相当于sql中的union)

Data test9;

Set table_1 table_2;

Run;



10、数据横向合并(merge)

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

(1)左连接(相当于sql中的left join)

Data test10_1;

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

By cust_no;

If a;

Run;



(2)内连接(相当于sql中的inner join)

Data test10_2;

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

By cust_no;

If a and b;

Run;



(3)全连接(相当于sql中的full 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;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表