sas程序

快捷键:
F3 运行
Ctrl+e 清空
Ctrl+o 打开文件快捷键
注释
------;
/
-----------*/

RUN
上下文: [GLOBAL STATEMENT] RUN 语句

Syntax: RUN ;

Executes the previously entered SAS statements.

Although the RUN statement is not required between steps in a SAS program, using it creates
a step boundary and can make the SAS log easier to read.

Arguments:

CANCEL
terminates the current step without executing it. SAS prints a message that indicates that the step was not executed.
CAUTION:
The CANCEL option does not prevent execution of a DATA step that contains a DATALINES or DATALINES4 statement.
CAUTION:
The CANCEL option has no effect when you use the KILL option with PROC DATASETS.

数据步 data

data ngj.test;       #data开头;
.....
.....
run;(quit;)         #执行;

过程步 proc

proc print;          #proc开头;title'hello world'
run;(quit;)         #执行;

文件名
data a;
生成一个a命名的数据集

file print;把本来在日志窗口显示的在输窗口显示

put ‘hello world’ 把引号内内容在日志窗口显示出来
run;

proc print;
run;

proc sort ;data=oranges
run;

libname file_name(自定义文件名称用于存放在sas中,或者使用历史已经定义好的文件名) 地址(文件在电脑中的物理地址)
data file_name.(wenjainming )需要自己定义
例:
libname ngj BASE “F:\WORKSPACE\RISK\niuguangjie”;
data ngj.test;
set apply_20190730;
by apply_no;
run;

一句话,put把数字变成文本,input则反之。

input介绍:
input 后面添加要查看的变量名称 负责生成变量的

 input x1-x5 意思是从x1到x5 [x1 x2 x3 x4 x5]x6 $ :意思是x6为字符串形式的变量date yymmdd15.  :意思是date为日期形式的变量 占15位x7 = 'o' :表示字符串x8 = 'i am a student' :表示字符串cards:后面接数据values结束时使用;号run;执行数据

data步介绍
算术运算符:+ - * / **(乘方)
比较算符:=(EQ) ^=(NE) >(GT) <(LT) >=(GE) <=(LE) in
逻辑算符:
&(AND) :与
|(!)(OR) :或
^(~)(Not):反

其它:

<(最小值)
< >(最大值)
||(!)(连接)

在括弧里的表达式先计算
第一级:** (+ -)前缀 ^ >< < >
第二级:* /
第三级:+ -
第四级:||
第五级:其余比较算符
第六级:&
第七级:|

数学函数:abs()、max ()、min ()、mod (x, y)、sign (x)、sqrt (x)、 sum ()、 mean ()、exp (x) 、log (x)、log10 (x)、log2(x) 、sin (x)、arsin (x)
截取函数:ceil (x)、floor (x)、int (x)、round (x,n)
字符函数:
index (S, S1) 在S中查找s1
substr (S , p, n)
scan(S2,n)
upcase(S) 将S转变成大写
compress(S,S1)

日期函数
SAS系统存贮日期值为1960年1月1日到指定日期之间的天数
SAS存贮时间值为从午夜开始到指定时间的秒数
日期时间值存贮为1960年1月1日午夜到指定日期时间之间的秒数
日期时间函数:
weekday ( ) 返回周几
day() 返回几号
month() 返回第几月
qtr() 返回季度
year() 返回年

             intck('year',x,y) x,y为日期 返回x-y的年数

概率统计函数:probnorm (x) n (of X1-Xn)、nmiss (of X1-Xn), var (of x1-xn)、std (of x1-xn)
随机数函数:rannor (seed)、ranuni (seed)
Functions例

set的使用方法
SET
上下文: [DATA STEP] SET 语句

Syntax: SET <SAS-data-set(s) <(data-set-options(s) )>> ;

Reads an observation from one or more SAS data sets.
从一个或多个SAS数据集读取观察结果。

data a;input id ming $ sex $ @@;cards;1 MARY F 3 ANN  F 4 TOM  M;
data b;input id name $ sex $ @@;cards;2 JOSE F 5 ERIE M 6 MAY F 1 MARY M
;
data  result;set a(rename=(ming=name)) b(in=inb);
/*数据集选项in=inb,规定临时变量inb,该变量标识观测是否来自b数据集,来自b数据集时,inb为1,否则为0*/*by id;
/*通过id连接在一起*/if inb=1 then bonus=100;
run;
proc  print;title'串接数据集';
run;data loss;set risk.loss;loss_mark=1;                       #添加loss_mark一列;loss_mob=intck("month", disbursed_date, loss_date);       #添加loss_mob一列;if loss_mob le 6 then             #通过判断条件结果添加 floss_mark一列;floss_mark=1;
run;

排序:
proc sort data=person; 过程步 排序数据集为person
by name; 根据name列排序,默认为升序
proc sort data=place;
by name;
data result;

merge的使用方法:

data file_name:merge Apple(in=a) orange(in=b);     相当于Apple as a organge as bby apply_no;if a=b;                           (相当于inner join)if a;                                (相当于left join)if b;                                   *by name;
proc  print;title'DATA SET RESULT';run;tips:merge和merge bymerge就是讲a表与b表直接连接不参考任何内容,只按照序号连接merge by按照by后面的字段来匹配连接by idmerge例子:/*把逾期表与百融数据连接起来使用左连接*/data bairong;set risk.bairong_credit;where apply_no ^= 0 ;run;proc sort data=loan equals;by apply_no;run;proc sort data=bairong equals;by apply_no;run;data total;merge loan(in=a) bairong(in=b);by apply_no;run;/*把风险表、首逾、七天首逾表合并起来*/proc sort data=table2 ;by &base &time_level;          *by table2.base这样的形式会出错 原因不详,暂时不建议;run;proc sort data=flag_1_2 ;by &base &time_level;run;proc sort data=flag_7_2;by &base &time_level;run;data   union_fx_1;merge    table2          flag_1_2       flag_7_2;by &base &time_level;run;

RETAIN
上下文: [DATA STEP] RETAIN 语句

Syntax: RETAIN <element-list(s) <initial-value(s) |
(initial-value-1) | (initial-value-list-1) >
< … element-list-n <initial-value-n |
(initial-value-n ) | (initial-value-list-n)>>>;

Causes a variable that is created by an INPUT or assignment statement to retain its value from
one iteration of the DATA step to the next.x`
使由输入或赋值语句创建的变量从数据步骤的一次迭代到下一次迭代保留其值。

 /*用retain排序,并并剔除不需要的变量*/data union_fx_2;retain &base daiyu_n_Sumoutstanding_amt_Sumflag_1_amt_sumflag_1_rateflag_7_amt_sumflag_7_ratem0_qx_amt_Summ1_qx_amt_Summ2_qx_amt_Summ3_qx_amt_Summ4_qx_amt_Summ5p_qx_amt_Summ1_ratiom2_ratiom3_ratiom2p_ratiom4p_ratioM0_M1 M1_M2 M2_M3 M3_M4 M0_M4loss_n_SumLOSS_AMT_Sumannual_loss_ratioRECOVERY_AMT_Sumnet_loss_amt_Sumannual_net_loss_rationet_floss_amt_Sumannual_net_floss_ratio;set union_fx_1;run;/*排序,并转置*/proc sort data=union_fx_2   ;by &base &time_level;run;proc transpose data=union_fx_2    out=&time_level._&base.;by &base  ;id  &time_level;/*var   ;*/run;

WHERE
上下文: [DATA STEP] WHERE 语句

Syntax: WHERE where-expression-1
< logical-operator where-expression-n>;

Selects observations from SAS data sets that meet a particular condition.
从满足特定条件的SAS数据集中选择观测值。

LAG
上下文: [SAS FUNCTION] LAG 函数

Returns values from a queue. n specifies the number of lagged values.

DROP
上下文: [DATA STEP] DROP 语句

Syntax: DROP variable-list;

Excludes variables from output SAS data sets.
从输出SAS数据集中排除变量。

%macro 宏
%MACRO
上下文: [GLOBAL STATEMENT] %MACRO 语句

[Syntax: %MACRO macro-name <(parameter-list)></ option(s)>;]

Begins a macro definition.
开始宏定义。

#简单宏例子;

                                    #%macro 宏名称(传入变量=);

%macro yourdays(birthday=); #%macro开头;

data null;
file print;
y=today();
x=&birthday;
year=Intck(‘year’,x,y); #intck(‘year’,x,y) x,y为日期 返回x-y的年数;
qtr=Intck(‘qtr’,x,y);
month=Intck(‘month’,x,y);
week=Intck(‘week’,x,y);
day=Intck(‘day’,x,y);

                                 #put 后面接输出数据;

put “你在这个世界上活了"year"年,”
month"月," week"星期," day"天。";
run;
%mend; #%mend;作为宏的结束;

%yourdays(birthday='06dec1994’d); #调用宏的方法 “%宏名称(变量名=‘ ’);” ;

#SAS宏详解;
局部变量使用下面的语法声明。
%LET
上下文: [GLOBAL STATEMENT] %LET 语句

[Syntax: %LET macro-variable =;]

Creates a macro variable and assigns it a value.
创建宏变量并为其赋值。

%LET (Macro Variable Name) = Value;
%LET make_name = ‘Audi’;
%LET type_name = ‘Sports’;
proc print data = sashelp.cars;
where make = &make_name and type = &type_name ;
TITLE “Sales as of &SYSDAY &SYSDATE”;
run;
在宏使用双引号进行设置

宏程序
宏是一组SAS语句,由名称引用,并在程序中使用该名称在任何地方使用它。
它以%MACRO语句开始,以%MEND语句结束。
句法
局部变量使用下面的语法声明。
以下程序在名为“show_result”的宏下对一组SAT staemnets进行解密; 此宏正由其他SAS语句调用。
%MACRO show_result(make_ , type_); %make和type是要重复使用的变量名称

proc print data = sashelp.cars;
where make = “&make_” and type = “&type_” ;
TITLE “Sales as of &SYSDAY &SYSDATE”;
run;
%MEND;

%show_result(BMW,SUV);

sas程序常用方法解析相关推荐

  1. JavaScript数组常用方法解析和深层次js数组扁平化

    前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...

  2. python谷歌翻译 频率限制_Django限制API访问频率常用方法解析

    需求描述: 平台中需要编写接口供第三方调用,需要控制调用频率,需求为5s内调用一次后不得再次调用. 解决思路 1.Django官方插件库中有个django-ratelimit插件可以满足要求, dja ...

  3. Class -- 10 -- Method类常用方法解析

    原文链接:Class – 10 – Method类常用方法解析 相关文章: Class – 01 – System类常用方法解析 Class – 02 – Arrays类常用方法解析 Class – ...

  4. Class -- 08 -- Parameter类常用方法解析

    原文链接:Class – 08 – Parameter类常用方法解析 相关文章: Class – 01 – System类常用方法解析 Class – 02 – Arrays类常用方法解析 Class ...

  5. Class -- 09 -- Field类常用方法解析

    原文链接:Class – 09 – Field类常用方法解析 相关文章: Class – 01 – System类常用方法解析 Class – 02 – Arrays类常用方法解析 Class – 0 ...

  6. java聊天程序步骤解析_java网络之基于UDP的聊天程序示例解析

    基于UDP的Socket通信 UDP协议不是一种基于稳定连接的协议,是一种面向数据报包的通信协议,不需要通信双方建立稳定的连接,也没有所谓服务端和客户的概念,数据报包在传输的时候不保证一定及时到达,也 ...

  7. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  8. python程序格式框架的描述_python 程序语言设计(嵩天)-学习笔记(第二章python 程序实例解析)...

    第 2 章 python 程序实例解析 学习目标: 掌握解决计算问题的一般方法. 掌握python语言的基本语法,包括缩进.变量.命名等. 掌握python语言绘制图形的一般方法. 了解python标 ...

  9. es6删除数组某一项_javascript基础系列:数组常用方法解析

    javascript基础系列:数组常用方法解析 今天是比较特殊的日子,我们编程人员共同的节日,1024,祝每个编程人员节日快乐! 数组是javascript必不可少的一项,今天让我们来总结一下数组操作 ...

最新文章

  1. POJ 1189 记忆化搜索
  2. wireless(二维数组前缀和)
  3. 史上最全的高可用服务系统线上问题排查工具单(一)
  4. Nginx 路由--Location的使用
  5. python 尚未调用 CoInitialize
  6. C#获取动态代码的值
  7. Struts学习总结之配置文件
  8. USACO 6.3 章节 你对搜索和剪枝一无所知QAQ
  9. 【HDU - 5009】Paint Pearls(dp,链表优化dp)
  10. 在Windows服务器上启用远程桌面连接
  11. 模糊查询SqlParameter参数化like
  12. VS编程,几个好用的Visual Studio插件推荐(二)
  13. jqGrid设置表格列的背景色
  14. Openssl win8 用法
  15. 浅读C Primer Plus——C语起源
  16. 构建高并发高可用的电商平台架构实践
  17. MATLAB求解二元(多元)函数极值
  18. 想要了解大厂PM吗,来看看这几款软件
  19. 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和
  20. git 重置用户名 密码信息

热门文章

  1. 笔记本连接投影仪全屏调试
  2. 如何通过CDN加速网站的访问?
  3. 解决EMC、EMI传导干扰的八大方法
  4. 【淘宝开店教程】淘宝直通车常见问题讲解
  5. 预训练模型与传统方法在排序上有啥不同?
  6. 未曾清贫难成人,不经打击老天真
  7. Vue开发实战十八:官网搭建全过程
  8. Android 自定义Activity的主题
  9. 数据中心高可靠网络设计
  10. 大数据系列修炼-Scala课程65