(二)SAS基本语法

1、语句

  • SAS语言的基本单位是语句,多条SAS语句构成一个SAS程序(*.SAS);

    • Libname mylib "c:\sasdata";
  • 语句通常由一个关键词、SAS名称、特殊字符、运算符等组成;

  • 语句一般以SAS关键词开头,以分号“;”结束;

  • 关键词是SAS系统定义的、有确定含义的符合,一般位于句首,用以说明语句的类型和功能

SAS语句书写规程:

  1. 语句可以从某一行的任意位置开始;

  2. 一条语句可以写成几行;

  3. 一行可以写几条语句;

  4. 不区分大小写;

  5. 注释语句的两种格式:

    • /* 注释内容 */

    • *注释内容;

除数据行外,SAS语句都是以关键词开头。

Run语句表示程序的结束,也可以每个程序后都加一个run。

title '2015 student';
libname mylib 'F:\sasdata';
data mylib.stud;
     input id $ name $ gender $ age hometown $;
cards;
201501001 周国兴 男 19 长沙
201501002 李铭   女 18 广西壮族自治区
201502003 彭晓钢  男 19 广州
201502004 胡大伟  男  18 武汉
;;;;
proc print data=mylib.stud;
run; 

​2、程序的构成

数据步

  • 数据步以关键词DATA开始;

  • 通常用于创建SAS数据集,对数据进行处理,如计算、挑选。

  • 数据步的输出可以是多种形式,如SAS数据集或报表,也可以将结果写到 日志窗口或外部文件中

过程步

  • 过程步以关键词PROC开始;

  • 通常用于分析和处理SAS数据集中的数据,绘制表图,展现数据集的信息等功能。

全程语句

  • 位于数据步和过程步之外;

  • 如:TITLE语句用于指定标题;OPTION语句用于规定系统运行的一些选项

  1. 一个SAS程序就是由0个或若干个数据步、过程步组成;

  2. 有时还包括一些全程语句用以贯穿控制整个SAS程序的某些选项、变量或程序运行的环境;

  3. SAS程序结束语句:RUN

  4. 运行程序:单击工具栏“提交”按钮,或单击F8

3、SAS数据步

3.1用DATA步创建数据集

方式一:直接输入方式

DATA<数据集名>;
INPUT<变量1>[$] <变量1>[$] <变量2>[$] ...<变量k>[$];
[其他数据步语句]
CARDS;
d11 d12 ... d1k
d21 d22 ... d2k
... ...
[;]
RUN;
  1. DATA语句

    • [格式] 逻辑库名.数据集名;

    • [功能] 标志数据步的开始,并定义新建数据集的名称

  2. INPUT语句

    • [功能] 为相应数据定义变量,告知SAS如何读取数据

  3. CARDS语句

    • [功能] 表面后面是数据行;

    • cards必须与input配合使用;

    • 在一个data步中只能使用一个cards;

    • 分号单独占用一行

方式二:外部文件读入数据集

DATA <数据集名>;
INFILE '<文件名>';
INPUT <变量名1> <变量名2> ... <变量名k>;
RUN;
  1. INFIILE语句用于从外部文件读入数据,必须出现在INPUT语句之前;

  2. 文件名包含盘符和路径;

  3. 文件中不包含变量名

data  temp2;
infile 'F:\sasdata\stud.txt';
input id $ name $ sex $ age hometown $;
run;

3.2 Input语句

语句格式: INPUT 变量名 输入格式;

功能:

  • 定义变量

  • 读取外部数据文件中的数据,读取CARDS语句后的数据

Input state $ 1-2 amount 4-8;
Input state $ amounnt @@;(行固定标识符))
  • 数据行中的值之间至少用一个空格分开;

  • 丢失值用“.”表示;

  • 在input语句中按数值出现顺序列出变量;

  • 以分号结尾;

  • 字符型变量名的后面跟$符号

3.3 SET语句

功能:

  1. 数据集的复制与修改;

  2. 拆分数据集;

  3. 纵向合并数据集

DATA[<新数据集名1>][<新数据集名2>]....;
SET[<已有数据集名1>][<已有数据集2>]....;
[KEEP <欲保持的变量名列表>;]
[DROP<欲丢弃的变量名列表>;]
[IF <条件>[THEN<语句>];]
RUN;

功能1:数据集的复制和修改

DATA[<新数据集名1>];
SET[<已有数据集名1>];
data class1;
 set sashelp.class;
 keep name sex age;/*字符变量后不要带$*/
 if sex="女";
run;

功能2:拆分数据集

DATA[<新数据集名1>][<新数据集名2>];
SET[<已有数据集名1>];
data boy girl;
   set sashelp.class;
   if sex=‘M' then output boy;
   if sex=‘F' then output girl;
run;

功能3:纵向合并数据集

DATA[<新数据集名1>];
SET[<已有数据集名1>][<已有数据集2>];

3.4 MERGE语句

横向合并数据集:

用merge语句将两个或多个SAS数据集中的观测横向匹配合并成一个新数据集中的一个观测。

DATA <新数据集名>;
MERGE <已有数据集列表>;
BY <变量1>[<变量2>...];
RUN;

用by语句指定匹配变量,每一个数据集必须按这些匹配变量进行排序。

3.5 IF语句

功能:仅对符合条件的观测值进行处理

格式一: IF <条件或表达式> THEN <语句>;
                       [ELSE <语句>];
格式二: IF <条件或表达式>;

4、过程步

常用过程步:Print、means、Sort、Format、Contents过程步

常用过程步语句:Var、By、class、output、Where、Label、Format

PROC <过程名>[DATA = <输入数据集>][<选项>];
    <过程语句>/<选项>;
    <过程语句>/<选项>;
RUN;

4.1 VAR语句

VAR语句在很多过程中用来指定分析变量

VAR<变量名1><变量名2>...<变量名n>;
Proc print data=sashelp.class;
    Var name age height;
Run;
  • 变量列表给出过程将要分析的数据集中的一些变量;

  • VAR语句中的变量顺序,也是将来输出结果时的变量顺序;

  • 通常VAR语句是放在过程的开始处。

4.2 CLASS语句

CLASS语句可用在某些SAS过程中,用来指定一些分类变量,SAS过程按分类的变量的不同值分别进行分析处理

按男女分类统计class数据集中收入weight的均值等统计量:
Proc Means Data=sashelp.class;
    Class Sex;
    Var weight;
    Title "How to use Class statement";
Run;

4.3 BY语句

BY语句在过程中一般用来指定一个或几个分类变量,根据这些分类变量值把观测分组,然后对每一组观测分别进行本过程指定的分析

BY <变量名1><变量名2>...;

4.4 LABEL语句

LABEL<变量名>='<标签>' <变量名>='<标签>'...;

5、全程语句

全程语句与一般语句不同,一般语句必须用在数据步或过程步内,作为数据步或过程步的一部分;

全程语句则既可以用在数据步和过程步内,又可以单独使用(在数据步、过程步外部)

-liibname

-Title

-Footnote

-Options

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一位有心人写得很好的SAS基础知识介绍,值得一读。 前 言 --不要把学SAS 当作一件很时髦的事情,能用简单软件完成的事情就没有必要动用SAS;如果你的领域是统计,那应该考虑一开始就学习SAS。纵观市面上的SAS 书籍,发现SAS 教程也不少,但是大多都是统计应用的书籍,而讲解SAS 语言基础的书籍却很难见到。作为一门语言语法教程的缺位是不应该的。较之于其他语言语法教程比比皆是,这也确实是一种奇怪的现象。 目前大多的SAS 数据也并不是没有讲到基础内容,而是都草草的介绍了一些语言基础就开始把读者带入统计过程,本来有些初学者心态就很急,而作者这么快的就将读者带入应用领域,更加没有人去学好语言基础了。更有甚者,某些作者在书中写了一些所谓的标准程序,然后告诉读者只要按照标准程序去套用就行了,还声称这是学习SAS 最快捷的方法。因此,作者决定写一本语言基础的教程,详细的讲解SAS 语法。非常非常高兴我的第一本SAS 教程经历一个多月终于出炉了,将其命名为《SAS 语言抛砖引玉》。该教程讲解SAS 最最基础的知识,之所以说是基础,是因为它跟已有的教程有一个最大的区别--只有SAS 语言,没有任何统计过程。没有任何统计过程的好处是读者能够静下心来跟随作者一起去研究SAS 语言,弄懂它,吃透它;而不是刚会走就想着跑甚至想飞,还没学几条语句就想去做统计分析,到头来发现错误百出而又手足无措
【公开课】SAS初级到高级教程 P1. 第1讲:SAS基本介绍 P2. 第2讲:SAS的安装_P P3. 第2讲续:SAS运行环境的界面介绍、第1个例子_P P4. 第3讲:Insight模块_P P5. 第4讲:SAS编程基本语法_P P6. 第5讲 数据的导入与导出 P7. 第5讲 数据的导入与导出续) P8. 第6讲 Analyst模块 P9. 第6讲 Analyst模块续) P10. 第7讲 SAS运算符及函数 P11. 第7讲 SAS运算符及函数续1) P12. 第7讲 SAS运算符及函数续2) P13. 第7讲 SAS运算符及函数续3) P14. 第7讲续4:DATA步信息语句_P P15. 第8讲:Assist模块_P P16. 第10讲:使用SAS制作统计分析报表_P P17. 第11讲:使用STAT模块进行统计分析介绍_P P18. 第12讲:SAS中的宏语言_P P19. 第13讲:Enterprise Miner 数据挖掘模块_P P20. 第14讲:使用ETS模块对面板数据进行计量分析_P P21. 中级视频1 P22. 中级视频2 P23. 中级视频3 P24. 中级视频4 P25. 中级视频5 P26. 中级视频6 P27. 中级视频7 P28. 中级视频8 P29. 中级视频9 P30. 中级视频10 P31. 中级视频11 P32. 中级视频12 P33. 中级视频13 P34. 第1讲数据处理 P35. 第2讲双变量分析1 P36. 第3讲双变量分析2 P37. 第4讲方差分析1 P38. 第5讲方差分析2 P39. 第6讲回归分析1 P40. 第7讲回归分析2 P41. 第8讲回归分析3 P42. 第9逻辑回归1 P43. 第10讲逻辑回归2 P44. 第11逻辑回归3 P45. 第12讲逻辑回归4_连续变量压缩 P46. 第13讲逻辑回归5_变量筛选 P47. 第14讲逻辑回归6_模型开发 P48. 第15讲逻辑回归7_整个流程 P49. 第16讲逻辑回归8_模型验证 P50. 第17讲逻辑回归9_模型打分 P51. 第18讲逻辑回归 P52. 第19讲聚类分析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白天数糖晚上数羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值