SAS草稿chapter2

本文介绍了SAS编程的基础知识,包括SAS逻辑库的建立、数据集的创建与管理、SAS语言元素、函数与CALL子程序等。同时,还详细解释了SAS系统的选项设置、表达式的使用以及自动变量的概念。

/*蓝瘦,香菇。*/

1.建立SAS逻辑库
LIBNAME libref <engine> 'SAS-data-library'
libname library1 'd:\resdat';
#################################################################
2.库引擎
@1.一个SAS逻辑库对应一个库引擎。
@2.SAS通过不同的库引擎读写不同格式的文件。
3.SAS数据集
数据文件:普通SAS格式及接口数据文件。
数据视图: native view与interface view.
###SAS数据文件可以被索引,SAS视图不可以被索引。
###创建数据集
data class;
set sashelp.class;
run;

###创建数据视图
#数据步视图
data CLASS_VIEW/view=class_view;
set class;
run;
#proc sql视图
proc sql;
create view class_sql as
select * from class; & select * . from sashelp.class;

SELECT * FROM SASHELP.CLASS;

quit;
#################################################################
4.存储编译的DATA步程序
语句格式 :
DATA data-set-name(s) / PGM=stored-program-name
<(<password-option><SOURCE=source-option>)>;
data-set-name 数据集名称
storedprogram-name 存储编译的DATA步程序名称
password-option 给DATA步程序名称分配一个密码
source-option 存储或编译源码

data tom/pgm=copy (alter=windows);
set resdat.class;
run;

data pgm=copy;
describe;
execute;
run;
#################################################################
5.SAS语言元素
data scores(keep=team game1 game2 game3);
/*在scores中保留team game1、2、3四个变量*/
proc print data=new(drop=year);/*去掉变量year*/
set old(rename=(date=start_date));/*将date改名*/
6.函数与CALL子程序
SAS函数对数据参数进行计算处理并返回一个值。
CALL子程序用来改变变量值或执行一些系统功能。
CALL子程序类似于函数但不能在复制于局长使用。
7.有效SAS语句示例
data data1;
data _null_;/*_null_为SAS名*/
put name $8.;/*name为SAS名,$8为输出格式*/
format date yymmdd10.;

proc means data=resdat.class;/*proc为关键词,means为过程名*/
infile "d:\resdat2\class.txt";
do i=1 to 100;
x=y+1;
sumx+x;
run;
#################################################################
8.SAS系统选项options
options obs=5;/*取数据集前五个观测量*/
data one;
set resdat.class;
run;
9.表达式
表达式有一系列操作符和操作对象组成,产生一个目标值。
操作对象:
常数:数值常数、字符常数、日期时间常数
变量:数值变量、字符变量
操作符:
算数算符
比较算符
逻辑算符
其他算符
运算次序

###日期时间常数:格式值后带单引号,后跟D\T\DT
January一月; February二月; March三月; April 四月;
May 五月;June 六月;July七月;August 八月;
September 九月;October 十月;November 十一月;December十二月
'1jan2000'd;
'01jan00'd;
'9:25't;
'18jan00:9:27:25'dt;
if begin='01jan2000'd then end='31dec2000'd;
###算数算符 **乘方 /除
data;
x=3.5**2.5;
put x=;
y=9+1/3'
put y=;
x=.;
y=1+x;
put y=;
run;
###比较算符
= 等于
^= 不等于
In 等于列表中的一个;
比较准则:结果为真赋值1、结果为假赋值0;
缺失值参加比较时,比任何有效值都小。
if x<y then c=5;
else c=12;
###逻辑算符
&与
|或
^非
###其他算符
>< 取最小
<>取最大
||连接:连接符不清理开头、结尾的空格。

#连接带空格的字符值
data;
x='good ';
y='morning';
z=x||y;
put z=;
run;
#连接多个变量与常数
data;
set resdat.lstkinfo;
result='%a('||stkcd||','||lstknm||');';
put result;
run;
###变量类型转换
data;
x=1;
y='10';
x=y; /*把字符变量复制给数值变量时,将自动把字符变量y转换为数值变量*/
run;

data;
x=1;
y='10';
z=x+y; /*算术表达式中有字符变量时,自动将字符变量转换为数值变量*/
run;


data;
x=1;
y='10';
if x<y;/*字符与数值变量进行比较时,自动将字符变量转换为数值变量*/
run;


data;
y='10';
z=log(y);/*当需要数值变量的函数引用字符变量时,自动将字符变量转换为数值变量*/
run;

###input
data a(keep=code);
set resdat.lstkinfo;
code=input(stkcd,6.)
run;
###数值自动转为字符
data;
x='10';
y=10;
x=y;
run;


data;
y=10;
z='room'||y;
put z;
run;


data;
y=10086;
z=substr(y,1,7);
put z;
run;


data a(keep=date x);
set ResDat.stk000001;
x=put(clpr, 8.2);
run;

#################################################################
10.自动变量:由数据步语句自动创建的。
在重复过程中被保留,而不是被设定为缺失;

_N_ 观测序号
_error_ 错误信息变量
_numeric_ 所有数值变量
_character_ 所有字符变量
_all_ 所有变量
first.variable 同一by组第一个观测
last.variable 同一by组最后一个观测

data one;
set sashelp.class;
keep _numeric_; /*只保留数据集中的数值变量*/
run;

#################################################################
11.SAS系统能检测出的错误类型
句法错、词义错 (eg.涉及词语拼写错误、漏写分号)
运行错(eg.非法数学运算)
数据错(eg.数值变量读字符值)
与宏有关的错误

/**/

 

转载于:https://www.cnblogs.com/keyao/p/6118940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值