sas基础

文章目录

  • sas基础
    • @[toc]
    • 基础
      • 第一步:DATA(数据步)
      • 第二步:PROC(过程步)
      • 第三步:RUN/QUIT(输出步)
      • 完整
    • 基本语法
      • sas文件扩展名
      • 语句
      • 变量名
      • 变量类型
      • 注释
      • 日志
    • 数据集
      • 语法
      • 数据集结构
      • 数据的输入
        • 内置数据集
        • 导入外部数据集

个人blog-1: 拾忆生活
个人blog-2: 极简-拾忆生活
欢迎大家来踩,同步更新


学习来源:

https://www.w3cschool/

https://www.zybuluo/longfei/note/587247

基础

  1. data步——获取和整理数据
  2. 写proc步——分析数据
  3. 提交代码给SAS,得到output——输出分析结果

第一步:DATA(数据步)

数据步的作用是建立数据集,进行数据的读取和修改,后续可以提供给过程步进行统计分析

命名数据集,定义变量,创建新变量,输入数据

DATA data_set_name;		#Name the data set.数据集名称
INPUT var1,var2,var3; 	#Define the variables in this data set.定义这个数据集中的变量。
NEW_VAR;				#Create new variables.创建新变量。
LABEL;			      	#Assign labels to variables.为变量分配标签。
DATALINES;		      	#Enter the data.输入数据。
RUN;

例子

DATA TEMP;
INPUT ID $ NAME $ SALARY DEPARTMENT $;
comm = SALARY*0.25;
LABEL ID = 'Employee ID' comm = 'COMMISION';
DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 Operations
3 Michelle 611 IT
4 Ryan 729 HR
5 Gary 843.25 Finance
6 Nina 578 IT
7 Simon 632.8 Operations
8 Guru 722.5 Finance
;
RUN;

一个完整的数据步:

DATA datasetname;/* 设定数据集名 */
    /* 定义数据集的变量 */
    /* 输入数据 */
    /* 创建新变量 */
    /* 设定缺失值 */
    /* 设定输出的数据集 */
    /* 设定变量的标签 */
    /* 其它数据任务 */

第二步:PROC(过程步)

过程对指定的数据集进行统计分析

  • 语法:
PROC procedure_name options; #proc的名字.
RUN;
  • 例子:
    • 使用MEANS过程打印数据集中数值变量的平均值
PROC MEANS;
RUN;

一个完整的过程步:

proc procname <options>;/* 启动过程步 对数据进行统计分析 */
    <statements>/<options>;/* 次级statement(语句),如果要添加选项,必须加/隔开 */

第三步:RUN/QUIT(输出步)

  • 使用条件输出语句显示数据集中的数据
  • 语法:
PROC PRINT DATA = data_set; /*输出数据集*/
OPTIONS; 	/*语句类型*/
RUN;
  • 例子:
    • 使用where子句从数据集中只产生少数记录
PROC PRINT DATA=TEMP;
WHERE SALARY > 700;
RUN;
  • 当SAS执行了run;

    • 会把前面读取到的所有data步或proc步的statement语句都执行完。如果一个程序里没有run;,那么这个程序在提交后也不会被执行。
  • 当SAS执行了quit;

    • 会把某些会持续运行,占用SAS资源的的proc停掉,让SAS能够执行后面的proc。

完整

DATA TEMP;
INPUT ID $ NAME $ SALARY DEPARTMENT $;
comm = SALARY*0.25;
LABEL ID = 'Employee ID' comm = 'COMMISION';
DATALINES;
1 Rick 623.3 IT
2 Dan 515.2 Operations
3 Michelle 611 IT
4 Ryan 729 HR
5 Gary 843.25 Finance
6 Nina 578 IT
7 Simon 632.8 Operations
8 Guru 722.5 Finance
;
RUN;
*********proc步骤*********;
PROC MEANS;
RUN;
*********print步骤*********;
PROC PRINT DATA=TEMP;
WHERE SALARY > 700;
RUN;

基本语法

sas文件扩展名

  • .sas
    • SAS代码文件
  • .log
    • SAS日志文件。它包含已提交的SAS程序的错误,警告和数据集详细信息。
  • .mht / * .html
    • SAS结果文件
  • .sas7bdat
    • SAS数据文件。其中包含SAS数据集,包括变量名称,标签和计算结果。

语句

  • 最后一行“;”结尾
  • 多行语句可以在同一行
  • 关键字不区分大小写
  • 必须使用一个运行语句run;结束

变量名

  • 最多32个字符
  • 只包括字母、数字、下划线_,不可以数字作为第一个字符
  • 变量名不区分大小写

变量类型

  • 数字型变量(SAS的默认变量类型)

    • 看它在逻辑上是否可以进行运算
      • 如身高、体重之类,就可以用于计算【是数字型变量】
      • ID号、电话号码之类,不可用于计算【是字符型变量】=》会自动忽略掉高位的0,如果你把ID号设置为数字类型,那么00012就会变成12
  • 字符型变量

    • 不可用于计算,会区分大小写

    • 包括Text(文本)或String(字符串)

    • 必须要手动把诸如ID号之类的数字形式的变量设置成字符型变量

  • 日期型变量

    • 是用整数表示的
    • 如10/15/09、01/05/2010、JAN052010
/*  Ex 2.2 变量数据类型实例程序 */
data vartypes;
    input id_num id_char $ weight_num @18 birth_date MMDDYY10.;/* 输入4个变量,分别是id_num(默认-数字型) id_char(字符型) weight_num(默认-数字型) birth_date(日期型,格式为:月/日/年) */
    datalines;
    0001 0001 60 03/07/2016
    0002 0002 50 04/02/2016
    0003 0003 30 12/31/2016
    0004 0004 45 04/12/2016
    0005 0005 49 04/07/2016
    ;
proc print data = vartypes;
run;

注释

两种形式

  • *注释内容;
# 单行注释
* 注释内容;    

# 多行注释
* 注释内容
* 注释内容;
  • / * 注释内容 * /
# 单行注释
/* 注释内容 */ 

# 多行注释
/* 注释内容
* 注释内容 */

日志

红色的字表示错误(error),说明代码出错了

绿色的字表示警告(warning),说明当前提示的这句代码可能有问题【大多数时候不用管的,嗯】

数据集

可读取CSV,Excel,Access,SPSS和原始数据

语法

DATA 数据集名
  • 临时数据集
    • DATA语句之后的一个字表示一个临时数据集的名字
    • 如果省略SAS数据集名称,则SAS会创建一个临时数据集
    • 临时数据集存在library里,名字叫work
    • 在会话结束时删除,一旦关掉SAS,就会被销毁
  • 永久数据集
    • 前半部分是SAS的 library(逻辑库)名,后半部分是数据集名【用一个.连接的复合名字】
    • 以文件的形式被储存到硬盘上,位置是library(逻辑库)指定的路径
    • 在会话结束后仍然存在
# Temporary data sets.临时数据集【保存在work逻辑库中】
DATA TempData;
DATA abc;
DATA newdat;

# Permanent data sets.永久数据集
DATA LIBRARY1.DATA1
DATA MYLIB.newdat;
/* 临时数据集实例 
    每一次重新打开SAS,要运行代码中的proc步,就必须先提交data步。
*/
data tempdata;/* 输入数据集 */
    input t @@;
    datalines;
    1 2 3 4
    ;
proc print data=tempdata;/* 打印数据集 */
run;

/*  持久数据集实例 
    只有第一次需要提交全部的代码,之后数据集就会被以文件形式储存在MyData库中。之后要使用,只需要执行第一句分配逻辑库名,就可以直接提交proc步,而无需再次提交data步输入数据。
*/
libname MyData "D:\MyData";/* 分配逻辑库名 */
data MyData.tempdata;/* 输入数据集 */
    input t @@;
    datalines;
    1 2 3 4
    ;
proc print data=MyData.tempdata;/* 打印数据集 */
run;

数据集结构

其实是一张表。每一列表示一个变量,每一行表示一个观测。

第一列是观测的序号

其余列是变量名

数据的输入

明天继续学习!infile语句

内置数据集

  • 视图=》sas资源管理器=》当前逻辑库=》SASHELP
    • 所有内置数据集的名称列表

导入外部数据集

  • 文件-》导入数据
    • 第一个导入标准文件资源
    • 第二个自定义

更多推荐

SAS入门学习