SAS初学习

SAS语言,专门为数据分析和报告处理所涉及的复杂数据操作、图形图表制作、文档创建与输出设计的面向过程的编程语言。

SAS程序是提交给SAS系统执行的一系列步骤(包括DATA和PROC步):

DATA步通常用来读取数据并创建SAS数据集;

PROC步或者程序步通常用于处理SAS数据集;

每一步都有开头和结尾的边界,称之为步边界。SAS基于步边界编译和执行每个独立的步。

注释语句:

注释分为两种类型,一种是块注释,一种是语句注释。其中块注释为任意长度、可以包含分号、不允许嵌套,注释语句要求注释内容是完整的一条语句,不能包含分号。

/*块注释1;
块注释2;*/
*注释语句内容;

SAS逻辑库是一个或者多个SAS文件的组合。这些SAS文件能够被SAS系统识别并且能作为一个单元引用或者存储。

SAS逻辑库的引用是通过定义一个逻辑名字“逻辑库引用名”或者libref来实现的。

SAS系统逻辑库(SAS会话初始化时自动创建,会话结束后自动删除)

临时逻辑库:work

永久逻辑库:sasuser,sashelp...

 逻辑库引用语法格式:

libname libref'SAS-library-location',<options>

例如:

libname test'D:\SAS\data'

SAS数据集是一种特定数据结构的文件,以数据表的形式呈现,表中包含变量和观测,其中列可以指变量,行指观测。

SAS数据集的名字是两级名称,包含逻辑库名称,点分隔符和数据集名称:

SAS输入格式informat是SAS系统中的模式集,用于决定如何解析要存入变量列的数据(直接读取或者转换)。

作用:将原始数据(带格式的)转换为SAS数据

输入格式有两种类型,对应两种SAS变量类型:

字符型输入格式,名称前带"$"符号;

数值型输入格式,名称前无"$"符号;

任何输入格式中的“.”点符号是必须的,

语法要求如下:

 <$><informat><w>.<d>;
 *其中$表示字符输入格式,informat输入格式名称,w总长度,d小数位数

e1c8a2978a0a41b09104c6b3607b6187.png

602fd32242f2462cb0d839316ee4f283.png

SAS日期输出格式如下表:

82dddd6599944a209a062abe63c5f05f.png

读其他数据类型的文件,语法格式如下:

libname libref<engine><path=>"workbook-name"<option(s)>

 例如读EXCEL文件:

libname prodx xlsx 'D:\workshop\data\products.xlsx';
*读EXCEL文件,并命名为prodx
libname prodx clear

文本数据访问语法格式:

proc import datafile='path\filename'
	dbms=filetype out=out-table<replace>;
	<guessingrows=n|MAX;>
run;
proc import datafile='E:\SAS\data.csv'
	dbms=csv out=work.storm_damage_import
	replace;
run;
proc import datafile='E:\SAS\data.dat'
	dbms=dlm out=traffic1 replace;
	guessingrows=3000;
	delimiter="|"
run;
*dlm表示有分隔符分隔的文件,out存在work路径下

查看全部的逻辑库:

proc contents data=sasuser._all_;
run;

5d927b0b835f414eb0c0087b699f4304.png

查看单个逻辑库:

proc contents data=sashelp.cars;
run;

b43f95ed8043433cbad2b23be97a6fff.png

打印整个表:

proc print data=sashelp.cars;
run;

a7d8fbc106aa4ce4b11db669bd4f9f5e.png

对数据描述统计:

proc univariate data=sashelp.cars;
run;

b432a777aaef4c3083e6b2c221820a23.png

创建统计报表PROC FREQ单因子频数表:

proc freq data=sashelp.cars;
	tables Origin Type DriveTrain;
run;
*要求离散型变量

ecfe6b0ead8745a79a470a655877274b.png

 筛选语句:

proc print data=sashelp.cars(obs=10);
	var Make Type MSRP MPG_City MPG_Highway Weight;
run;

加入where筛选语句: 

proc print data=sashelp.cars(obs=10);
	var Make Type MSRP MPG_City MPG_Highway Weight;
	where Type = 'SUV' and MSRP <=30000;
run;

 数据格式化

语法结构如下:

proc print data=libref.sas-data-set;
    format variable(s) format;
run;

示例对weight格式进行处理:

proc print data=sashelp.cars;
	var Make Model Type MSRP MPG_City MPG_Highway Weight;
	where Type = 'SUV' and MSRP <=30000;
	format weight comma8.1;
run;

数据排序,默认升序排列,语法格式如下:

proc sort data=input-sas-data-set
			<out=output-sas-data-set>;
	by <descending>by-variable(s);
run;

 示例:

proc sort data=sashelp.cars
	out=cars;
	by Make;
run;

 多报表展示,分制造商展示:

proc sort data=sashelp.cars
	out=cars;
	by Make;
run;
proc print data=sashelp.cars;
	var Make Model Type MSRP MPG_City MPG_Highway Weight;
	where Type = 'SUV' and MSRP <=30000;
	format weight comma8.1;
	by Make;
run;

set语句创建新数据,语法格式:

data output-sas-data-set;
	set input-sas-data-set;
run;

 示例:

data cars;
	set sashelp.cars;
run;

加入筛选语句格式:

data cars;
	set sashelp.cars;
	<where where-expression;>
	<drop variable-list;>
	<keep variable-list>
run;

示例:

data cars;
	set sashelp.cars;
	where make='Audi' and model contains'A6';
	drop MPG_City Wheelbase;
run;
proc print data=cars;
run;

新增计算列,用赋值语句创建新变量:

varibale=expression;

 赋值语句表达式,将计算结果赋给一个新的或者存在的变量。

条件处理,语法格式:

if expression then satements;
if expression then satements;
<else if expression then satements;>
<else if expression then satements;>
if expression then satements;
<else if expression then satements;>
<else satements;>

 循环语句:

if expression then do;
<executable statements>
end;
else if expression then do;
<executable statement>
end;
else do;
<executable statements>
end;
data work.bonus;
	set ORION.sales;
	length Freq $12;
	if Country='US' then
	do;
	Bonus=500;
	Freq='Once a Year';
	end;
else if Country='AU' then 
	do;
	Bonus=300;
	Freq='Twice a Year';
	end;
run;
proc print data=bouns;
run;

 设置数据列标签:

proc print data=sashelp.class label;
var Name Age Weight;
label Name='First Name';
run;

设置标题、题注:

title<n>'text'
footnote<n>'text'

导出数据:

proc export data=sashelp.cars
outfile='e:/cars.txt'
dbms=tab replace;
run;
libname output xlsx'e:\output.xlsx';
data output.class;
	set sashelp.class;
replace;
run;
libname output clear;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roy Teng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值