SAS 学习笔记 (一) — SAS简介

文章目录

          • 1、四大模块
          • 2、四大任务
          • 3、窗口和快捷键
          • 4、SAS文件与逻辑库
          • 5、SAS语句规则
          • 6、SAS三种基本类型的选项
          • 7、SAS变量的六大属性
          • 8、其他

1、四大模块

数据库:BASE,FSP,ACCESS
分析核心:STAT, ETS, QC, OR, INSIGHT
开发呈现工具:AF, EIF, GRAPH
分布处理与数据仓库:CONNECT,WA

2、四大任务

数据访问
数据管理
数据分析
数据呈现

3、窗口和快捷键

帮助(F1 / HELP)、运行程序(F3 / SUBMIT)、调用上一步程序(F4 / RECALL)、热键设置(F9 / KEYS)
程序编辑器 PGM/WPGM(F5)、日志 log(F6)、输出 output(F7)
资源管理器 explorer 、 结果 result
窗口内部切换(Ctrl+Tab)、窗口外部切换(Alt+Tab)

4、SAS文件与逻辑库

原有逻辑库:sashelp 示例库、sasuser 永久库、work 临时库(默认,可省略库名)
新建逻辑库:文件目录 → SAS库 LIBNAME 库名 “路径”;
库名(逻辑库引用名):libref
数据集访问方式:库名.数据集(二级访问规则)
读入程序:直接在菜单栏打开 / 命令框提交 include "路径";
SAS文件包括:SAS数据集(Table)、SAS数据视窗(View)、SAS目录册(Catalog)
数据集vs数据视窗:前者含描述部分和数据部分;后者只含描述部分(属性 内容)
数据部分:记录(行、观测)/ 变量(列、字段、指标)

5、SAS语句规则

SAS一个程序(procedure)由若干个过程步(proc)组成,一般逐行执行程序,逐条处理观测
每条SAS语句(statement)都以关键词开始;
每条SAS语句都以分号结尾(空语句:;);
不区分大小写、不区分单引号和双引号;无缩进要求;
相等判别和赋值都用 =
单个或多个语句可位于一行或多行;
缩进原则 → 增强程序的可读性
命名规则(逻辑库/文件/变量):由字母、下划线、数字组成,且必须以字母或下划线开头;不超过8个(逻辑库) / 32个(变量)字符;不区分大小写;[ 名如其意;多个单词用大写或下划线间隔;]
注释方式: * xxx ; or /* xxxxxx */

6、SAS三种基本类型的选项

影响范围:系统选项 > 语句选项 > 数据集选项

  • 系统选项
    由“SAS系统选项窗口”或“OPTIONS”命令更改,持续有效
OPTIONS 
YEARCUTOFF = year;  /*指定SAS使用的百年跨度的第一年*/
TITLEn "标题";
TITLE;    /*取消所有当前标题*/
FOOTNOTEn "脚注";
ls = ;    /*linesize*/
ps = ;    /*pagesize*/
  • 语句选项
    出现在个别语句中,影响特定的DATA步和PROC步
  • 数据集选项
    只影响SAS如何读取或输出个别的数据集(放在数据集名称后面的括号中)
KEEP, DROP, RENAME = (oldvar = newvar), FIRSTOBS, OBS, LABEL, IN, WHERE ...
7、SAS变量的六大属性

类型 type*:分类/字符型(名义、有序)、数值(定距、定比)
命名 name*
长度 length*(存储) length 变量名 <$> 长度(尽量不要对数值型变量定义长度)
标签 label (别名) label 变量名 ="标签名"
格式(输入 informat / 输出 format) (读取 / 展示)
(前三个是必须要有的变量属性)

  • 字符型变量
  • 数值型变量:默认为8个字节的浮点方式-16或17个有效数位
    -日期变量:存储为从1960年1月1日至一个指定日期间的天数
    (引用日期作为常量的方式var = 'DATEw.'D)
    -时间变量:存储为从00:00:00开始累积的秒数
    -日期时间变量:存储为从1960年1月1日00:00:00开始累积的秒数
    -货币变量:存储为美元
  • 缺失数据值:字符型缺失值显示为空格 ; 数值型缺失值显示为句点 .

标准数据 vs 非标准数据
标准数据:电脑看到就能识别的 e.g. 12 / 12.34 / 123e-5
非标准数据 e.g. 12,345 / $12345 / 4.25%

输入与输出格式
FORMAT variable(s) format;
INFORMAT variable(s) format;
数值型:W. (宽度.<小数位>)(默认左对齐)
字符型:$ W. (默认右对齐)
一般:<$> <格式名> W.
其他: best w.d(自动选择最佳格式) z w.d(左边补齐0)
(区分输入和输出中小数点对格式的影响)
书P49-50

输入数据 输入格式 存储数据 输出格式 输出数据
1223412 7.2 12234.12 8.2 12234.12
12,234.1234 comma7.2 12234.12 comma9.2 12,234.12
$12,234.1234 dollar8.2 12234.12 dollar10.2 $12,234.12
其他符号(12234.12) commax12.2 12.234,12 eurox12.2 €12.234,12
自动调整(12234.12) dollar5.2 12234 dollar4.2 12e3
201097 ddmmyy6. 13807 mmddyy6. 102097
20/10/97 ddmmyy8. 13807 mmddyy8. 10/20/97
20/10/1997 ddmmyy10. 13807 mmddyy10. 10/20/1997
20OCT97 date7. 13807 date9. 20OCT1997
October 20,1997 worddate. 13807 weekdate. Friday,October 20,1997
Oct1997 monyy7. 13807 year4. 1997

8、其他

所有字符型变量 _ALL_ _CHARACTER_
所有数值型变量 _ALL_ _NUMERIC_
不用展示具体的数据(只能与_ALL_配合使用)_ALL_ NODS
将逻辑库里的所有SAS文件以列表方式输出 :
PROC CONTENTS DATA = libref. _ALL_ NODS; RUN;

/* -----------PROC步------------ */
/* 展示内容 */
PROC CONTENTS DATA = libref.dataset;
	ID 关键变量;
	VAR 分析变量;
	WHERE 查找;
	FORMAT 输出格式;
	LABEL 标签;
RUN;
(对数据清洗有用)

/* 打印数据 */
PROC PRINT DATA = libref.dataset <options>;
	ID 关键变量;
	VAR 分析变量;
	WHERE 查找;
	FORMAT 输出格式;
	LABEL 标签;
RUN;

/* 排序 */
PROC SORT DATA = libref.dataset mean max min var;
	VAR 分析变量;
	BY (分组 分组之前要先排序);
RUN;

/* 简单统计 */
PROC MEANS DATA = libref.dataset mean max min var;
	VAR 分析变量;
	BY (分组 分组之前要先排序);
RUN;

/* 检验 */
PROC TTEST DATA = libref.dataset;
	CLASS (分类 分类验证某变量是否有影响);
	VAR 分析变量;
RUN;

/*  */
noobs (不显示行号)
label name 姓名

你可能感兴趣的:(SAS)