工作--SAS BASE 编程基础语句总结

2022-03-30 00:00:00 数据 函数 日期 变量 语法

一,函数篇

字符型函数:

1,compress函数 消除加保留

语法compress(V1,”AB”, ”I”)I是指删除V1中的AB不分AB大小写

Compress(V1,” ”)指去掉V1中的缺失值

Compress(V2,”AB”, “K”)K是指保留AB

Eg:可以直接写compress(Z);不写空格代表默认消除空格;

2,substr函数 截取字符串

语法 substr(string,position,length)从第position开始截取截取length位数


EG: y=substr(v1,1,4);假如V1是20170414 那么Y为2017;


3put函数 日期型(日期本质是数值型变量SAS默认是1960年1月1日距离指定日期的天数)字符型 变量转化成字符型变量

语法 Put(V1,format.)

Eg1:数值型转化为字符型

x=”01 jan 2007”D;

y=put(x,yymmdd.10);z=compress(Y,”-”);

Run;

Eg2:字符型转化为字符型

Y=put(“011”,$a.);

($a.是自定义format)

4tranward替代

语法:tranward(sours e, target, replacement);在变量V1中,用replacement替代target

EG3:y=tranward(V1,”ab”,”x”);

*tranward与compress在消除方面的不同点为:tranward可以先替代再消除固定AB,compress消除的对象为AB字母。Eg:compress(tranward(v1,”ab”,”x”),””);就只消除AB

Compress(v1,”ab”);就会消除ABA*

数值型函数:

1input函数把字符型变量转化成数值型变量

语法 y=input(sourse,informat)

Eg:x1=’20071001’; x2=’021001’;

Y1=input(x1,yymmdd10.);Y2=input(x2,yymmdd8.)

Run;

总结:1,字符型转化为日期型的有两种方法

input语句; EG1:Y1=input(x1,yymmdd10.);

mdy语句; (substr()*1,substr()*1,subtr()*1) EG:

2,日期数值型转化为字符型用put;EG:Y=put(“011”,$a.);假如是20120606这样的字符型格式y=mdy(substr(date,5,2)*1,substr(date,7,2)*1,substr(date,1,4)*1);

3,数值型转化为日期型用mdy(取整求余数) EG:如果是20120606这样8位的那么y=mdy(mod(int(date/100),100),mod(date,100),int(date/10000));

2,Intck函数 找出间隔月,日,年

语法intck(interval, from,to)

Eg:y=intck(‘qtr’,x1,x2); 注意x1,x2都为日期型函数;返回的是X1日期到X2日期之间季度数。

3,Intnx函数 返回指定时间间隔的日期型

语法intnx(interval,startfrom, increment,<aligment>)

间隔时间年月日,开始日期,间隔步长+-,日期控制

日期控制的语法:b:返回间隔时常的起始值,m指返回间隔时长的中间值,E指返回间隔时常的末尾值。S:返回间隔步长的同值

Eg:取间隔一年后的同日

Y=intnk(‘year’,x1,1,’sameday’);

取间隔一个月后的末日

Y=intnk(‘month’,x1,1,’E’);

SEL语言函数

1,open函数

语法 open(SAS-set-name); 成功=1,失败=0

2,close函数

语法 close(SAS-SET-NAME);成功=0,失败=1

3,fetchobs函数 获取一条观测值,如果成功=0,失败非0

语法 y=fetchobs(sas-set-id,10);

4,varnum函数 获取某个变量的位置

语法 y=varnum(sas-set-id,name);

5,getvarc函数getvarn函数 返回某一字符型变量的值/数值型变量

语法 y=getvarc(sas-set-id var-num)


待更......

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二,常用DATA PROC篇

SAS 语句分为DATA 步骤加上PROC步骤。

DATA 步骤是将特定规则的数据放入新建的数据集中,proc步骤是用于对已有的数据集进行数据分析。

在此总结常用proc步。

1,proc freq 求分类型变量的频数分析

例子:数据集

SAS代码
对train这个数据集里面的gender性别求频数,它会输出

2,proc means 求数值型变量分布分析:统计量均值,中位数,标准差等。

例子,数据集

SAS语句
means 可以对指定变量profit求指定统计量,这里求了均值,分位数,标准差,大小可以求出来。还有标准误,方差等都可以求。

var 是统计量的对象,class是分组对象

结果

3,proc summary 求数值型变量分组汇总值

数据集:同上

SAS语句:

结果是将对Product_line产品线这个变量分组后对应的每组大小平均以及总和利润输出到新数据集中。

与means 不同,summary 可以输出到数据集,再进行加工,means主要直接产生报表。

4,proc contents 求整个数据集的数据概况,数量,观测,变量类型,长度等

数据集:同上

SAS语句:

结果:

5,proc print 打印出需要的特定规则的过滤后的,求值后的选择性变量的报表。

数据集:同上

SAS 代码:

noobs,不打印1234序列号,sum 加总利润,where筛选,contains 只要Product_group包含‘Kids’这个字符串,注意区分大小写。结果:


6,proc sort 对数据集按照某个字段按照顺序或者降序方式排序。

数据集:

SAS代码:

个对日期默认升序排序,第二个按照 产品线分组,对日期descending降序排序,第三组对产品线nodupkey去重。


7,proc format 自定义格式,运用格式

数据集:

SAS代码:

proc format 自定义格式,value 赋值,后面跟要把那些观测定义格式;data 步骤用于应用格式。结果

8,proc univariate 输出指定变量的距,统计观测量及分位数,一次性输出

数据集:同6

SAS代码:

结果:

9,proc select 随机抽样分层抽样

相关文章