SAS Learning

本文详细介绍了SAS编程的基础知识,包括Option语句、SAS数据集选项、DATA语句及其子句如infile、input、label、retain、sum、数组array等。还涉及PROC语句的各种过程,如print、import、sort、format、means、freq、tablulate、report等,以及函数、ODS系统、宏和数据处理技巧。内容全面,适合初学者掌握SAS基本操作。
摘要由CSDN通过智能技术生成

基础知识

  • 分号结尾;
  • 字母或者下划线开头;
  • 不区分大小写;
  • 数据步按照一行一行、一个观测值一个观测值的顺序执行;
  • 注释方法:一种是*号,一种是用/**/表示,注意第二种注释方法不能放在第一列;
  • SAS的所有函数都需要括号,即使没有参数;
  • 列出变量名时可以有快捷方式,如:cat8-cat12;y–b之类。如果不能确定数据集中的变量顺序,可以用proc contents的postion选项来查看。

Option语句

OPTIONS 语句 OPTIONS 语句是 SAS 程序的一部分,并可影响之后的所有语句。
注意,后面的 OPTIONS 语句会覆盖前面的,即以后面的 OPTIONS 为主。
(也可以通过系统选项来改变)

常用选项

Option 作用
CENTER/NOCENTER 输出是否居中,还是左对齐。默认居中
DATA/NODATE 今天的日期是否出现在输出的顶部。默认输出
LINESEZE 控制输出行的最大长度,n 可能的值为 64 到 256
NUMBER/NONUMBER 输出的页面页码是否需要。默认需要。
ORIENTATION=PORTRAIT;
ORIENTATION=LANDSCAPE;
指定打印输出的方向。默认竖向(portrait)
PAGENO=n 输出页开始的页面。默认为 1
PAGESIZE=n 每个页面输出的最大行数。可能的值为 15 到 32767
RIGHTMARGIN=n;
LEFTMARGIN=n;
TOPMARGIN=n;
BOTTOMMARGIN=n
指定打印输出的边缘大小。默认 0.00 英寸(Specifies size of margin(such as 0.75in or 2cm)to be used for printing output.Default:0.00in.)
YEARCUTOFF=yyyy 设定起始年份

SAS数据集选项

  • KEEP=variable-list 告诉 SAS 保留哪个变量
  • DROP=variable-list 告诉 SAS 丢弃哪个变量
  • RENAME=(oldvar=newvar) 重命名某个变量
  • FIRSTOBS=n 从观测值 n 开始读取变量
  • OBS=n 到观测值 n 停止读取
  • IN=new-var-name

KEEP=,DROP=,和 RENAME=的作用与 keep、drop、rename 很相似。区别在于,后者适用于数据步中的所有变量,而前者仅使用与语句前面的那个数据集。而且,后者仅可以在数据步
中使用,而前者除了数据步和过程步,还可以在输入和输出数据集中使用。

DATA语句

infile

常用选项

选项 作用
lrecl 指定数据长度,不写则默认256
firstobs 从原始数据的第N行开始读取
obs 读到某一行
missover 不进入下一行,未赋值的变量即缺失值
truncover 如果某一行长度不够,也不转到下一行
DLM 指定分隔符
DSD 忽略引号中数值的分隔符;
自动将字符数据中的引号去掉;
将两个相邻的分隔符当做缺失值来处理。
  1. 如果长度过长,SAS 不能读取全部,此时需要在 INFILE 语句中使用 LRECL=来指定长度,这个长度必须是数据中最长行的长度。
    truncover

  2. 使用 column input 或 formatted input 输入时可能会需要Truncover,因为这时有的数据行比其他的短。如果某一行没有占满,则必须用truncover,否则会转到下一行继续读取。

  3. DLM=‘09’X指定时,是制表符。

  4. DSD默认分隔符是都好,如果不是都好,要用delimiter来指定。

input

常用选项

选项 作用
$ 加在是字符串的变量后
@ 到达某一列,或者读取某一特定字符串后的数据
@ 在input语句结尾加,告诉SAS先停在此行
@@ 停止符号,适用于一行有多个观测值
/ 换行
#n 跳转到第n行开始读取
. 缺少句号会使得SAS把形式当作变量名
+1 跳过一列
遇到空格则不再继续读取,加在$length 前面

List input

input name $ age height;

限制条件

  1. 你必须读取所有的数据记录,不能跳过某些值、缺失值必须用句号“.”代替。
  2. 字符串数据不能包含空格、长度不能超过 8 个字符。
  3. 如果数据文件包含日期变量或者其他需要特别处理的变量,list input 将不再适用。
    虽然很多限制,但仍有大量的文件可以用这种方式读取。

Column input

input name $ 1-10 age 11-13 height 14-18;

当每个变量的值都出现在数据行的相同位置时,可以使用Column input。

限制条件

  1. 变量值是字符串或者标准数值(只包含数据、小数点、正负号、和科学标注的 E。逗号和日期都不能算)。

优势
2. 不要求变量值之间的空格。
3. 缺失值可以直接用空格代替。
4. 字符串中可以使用空格。
5. 可以跳过不需要的变量。

informates

用于读取非标准格式的原始数据。

 input name $10. age 3. height 5.1  +1 birthdate MMDDYY10.;

可选变量形式
可选择变量形式可选变量形式

特殊读取方式

混合读取
input parkname $ 1-22 state $ year @40 acreage COMMA9.;

混合读取方式有时会遇到问题:SAS 通过一个指示器标注位置,来读取原始数据的一行,但每种读取方式对指示器的使用稍有不同。List 方式下,SAS 自动找到非空格区域并开始读取; column 方式下,SAS 读取你所指定的特定位置;informatted 方式下,SAS 不理会指示器的标准,只是依次的读取。这时,就会需要列指示器@n,来人为的让 SAS 的读取直接跳至某列。

读取某一字符后面的数据
input @'Breed:' DogBreed :$20.;

第二种方法只要知道要读取的数据的前面那个字符或单词即可。
如果要使 SAS 读取过程中遇到空格则不再继续读取,则要在$length 前面加冒号“:”

跨行观测
input city $ state $ 
      / normalhigh normallow
      # 3 recordhigh recordlow

行指示器:

  • 斜线/:告诉 SAS 跳至原始数据的第二行
  • #n:跳至第 n 行,n 代表原始数据中某观测值的行数
一行有多个观测值

一行多个观测值一行多个观测值数据

input city $ state $ normal mean @@;

当一行出现多个观测值时,可以在 input 语句结尾加一个停止符号@@ 。

读取数据时即进行筛选/用@停留
input tpye $ @;
if type = 'surface' then delete;
input name $ 9-38 amtraffic pmtraffic;

在input语句结尾加@,告诉SAS先停在此行,同时用if语句检测该观测值是否满足需要,如果是,那么再用一个input语句来读取现有的变量。

@的作用类似于@@,都是行停留指示符(line-hold specifiers),不同地方在于停留多久,@能使 SAS 停留到下一个 input 语句(也不换行),@@能使停留的时间到下一个 data 步(也不换行)。

label

label 语句为变量打上标签,并储存在数据集中,在打印时会显示。过程步中也可以使用 label,但只在 proc contents 中有效,不会储存在数据集中。

retain

retain 语句可以让 SAS 保存前一次变量的值。它可以出现在数据步的任何位置。

RETAIN variable-list (initial-value); 

sum

sum(v,expression)

这个语句将表达式的值赋给变量,同时将变量的值保留到下一次迭代。这个变量必须是数值型,且初始值为 0。

数组array

array name(n) $ variable-list; 
  1. Name 是数组名,n 是变量数,()也可以用[]和{}代替。如果变量是字符串,则需要 , 且 变 量 是 新 创 建 的 字 符 串 时 , ,且变量是新创建的字符串时,
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 在SAS中,统计模型是用于分析数据和建立预测模型的工具。SAS提供了多种统计模型的过程,如PROC REG用于线性回归分析,PROC LOGISTIC用于逻辑回归分析,PROC ANOVA用于方差分析等等。这些过程可以帮助用户根据数据的特点和需求选择合适的统计模型,并进行相应的分析和建模。\[3\]同时,SAS还提供了PROC PRINT和PROC CONTENTS等过程,用于展示和查看数据集的内容和描述信息。PROC PRINT可以用来列出数据集中的观测值,而PROC CONTENTS可以显示数据集的描述信息。\[2\]在使用SAS进行数据处理时,可以使用DATA NULL语句告诉SAS不要写数据集名,以提高程序的运行效率。同时,可以使用FILE语句创建输出文件,使用TITLE语句去除自动标题,使用PUT语句打印数据,并使用SET语句处理和堆叠数据。\[3\]总之,SAS提供了丰富的统计模型和数据处理工具,可以帮助用户进行数据分析和建模。 #### 引用[.reference_title] - *1* *3* [SAS Learning](https://blog.csdn.net/Juanita_W/article/details/102497141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SAS statistics by example( study notes)](https://blog.csdn.net/weixin_44642820/article/details/125904526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值