统计211
标题:
SAS教程简单摘录
[打印本页]
作者:
275932488
时间:
2011-7-1 13:33
标题:
SAS教程简单摘录
一简介
1.命令
keys 快捷键
include 'filename' 引入指定文件
libname 确认数据库内容
recall 调出上次执行的程序
submit 提交 F3
二 SAS数据管理
1.指定SAS库标记
libname course 'f:\course';
2.两级名
库标记.filename
三原始文件转换成数据集
数据步 data 过程步 proc
1.数据步 data
infile '文件名';(若需直接嵌数据,用cards代替)
input ...;(读入模式:
column,formatted,list,named)
两阶段——
1)编译 PDV存放当前观测
2)执行
2.column模式(适合固定列、标准字符数字)
input 变量名1 $1-12 变量名2 $4-18
$:变量为字符型
3.formatted模式
input @n/+n 变量名 informat ...;
输入指针控制符:@n(移到第n列)/+n(后移n列)
4.SAS日期
MMDDYYw.
DDMMYYw.
DATEw.
...
5.firstobs=和obs=选项
选择记录段
四建立、浏览、编辑数据集
1.字符:<=200(以ASCII码存放)
数字:8字节(以浮点数存放)
2.输入informat
输出format
3.建立
proc fsedit new=数据集名;
end;进fsedit窗口(add添加记录;end存盘;cancel退
出)
4.修改
proc fsedit data=数据集名;
可以用where获得数据集的子集;delete删除
5.浏览
proc fsview data=数据集名;
drop命令去掉不需要显示的变量;where用上;where undo取消
6.viewtable
表编辑器
五增删改数据集的记录或变量
1.赋值语句
variable=表达式;
注: ** 幂运算 rasise=x**y;
|| 字符串拼接 str=str1+str2;
2.SAS函数
function-name(参数1,参数2,...)
total=board+trans+nonrev;
total=sum(board,trans,nonrev);
区别:若一项参数为空,sum()仍可计算,total不然
3.条件转移语句
if ... then [do; .. end;]
[else [do; .. end;]]
注:dest='DFW'中变量名DFW大小写敏感
可由upcase(argument)函数解决
如:upcase(dest)='DFW'
4.length语句
length variable(s) $length;
5.drop=和keep=选项选择变量
删除
保留
6.if语句选择观测
如
175;
7.delete语句(不常用)
if ... then delete;
8.SAS日期常数和日期函数
常数: 'ddMMMyy'D
函数: year(date);...
9.set语句
SET a;
可从已存在数据集(old)中创建数据集
DATA new|old;
SET old;
其他SAS语句;
run;
六合并与拼接
1.SET语句拼接数据集
DATA c;
SET a b..;
run;
若有不同变量名,则相应空缺
2.rename=选项
重命名变量
set a b(rename=(old=new));
3.排序
proc sort data=a out=b;
by 变量名;
run;
4.合并
data a;
merge b c..;
by 变量名列;
run;
5.in=选项
a(in=0);观测不是来自数据集a
a(in=1);观测来自数据集a
_N_是执行数据步时自动产生的变量,循环执行次数的计数
6.rename=选项
也在变量名不同时用于重命名
七制作报表报告
1.产生简单列表
proc print data=a;
run;
若省去data=a则显示最近的数据集
2.noobs选项
print过程中去掉obs列
3.var语句
控制变量出现与否及顺序
4.选择数据集观测
where
---between-and
---contains
5.sum a b;
计总和(列)
6.数据分组和小计(按变量x分组)
proc sort data=a out= b;
by x..;
proc print data=c;
id m..;
var y..;
sum n..;
by x..;
run;
7.id语句
对报表修改
8.按组分页
pageby x;
9.标题/脚注
titlen 'hello';
footnoten 'hello';
10.label标签
label x=''
y=''
...
11.split控制表头分割
split='*'(*为分割符)
12.format输出格式
format x date7. y dollar10;
13.定义用户化格式
proc format;
var $destfmt 'LON'='london'...;
14.SAS系统选项
options
15.类变量,分析变量?p96
16.tabulate过程
proc tableulate data=a;
class x;
var y;
table 页,行,列;
run;
n为频数
17.table语句
操作符控制表格格式
符号 作用
逗号,转另一维
空格 表格连排
星号* 交叉组合分组
如: table a,b,c;三维表(页/行/列)
18.控制表格形状
tabulate的 format= 每格宽度
table的 rts= 第1列宽度
19.选择需要观测
where x in('m','n');
20.var定义分析变量后,默认为sum
21.为表格加标签
keylabel x='label';
注:label<40,tabulate自动生成,无需label或split=
八 SAS中使用sql
表--SAS数据文件--文件
行--观测--记录
列--变量--域
九 SAS宏
系统信息
条件执行数据步/过程步
开发交互系统(%windows语句)
产生与数据无关程序
不同数据/过程步间传递数据
1.%let语句
定义宏变量
%LET 宏变量=x;
2.symput函数
传递数据
call symput(a,b);
a:将要定义的
b:宏变量值
若字符串含引号则用双引
3.SAS宏调用
定义:
%macro name(传递调用的变量,...);
调用实体
%mend name;
引用:
%name(参数);
欢迎光临 统计211 (http://www.tj211.com/)
Powered by Discuz! X3.2