sas基础
文章目录
- sas基础
- @[toc]
- 基础
- 第一步:DATA(数据步)
- 第二步:PROC(过程步)
- 第三步:RUN/QUIT(输出步)
- 完整
- 基本语法
- sas文件扩展名
- 语句
- 变量名
- 变量类型
- 注释
- 日志
- 数据集
- 语法
- 数据集结构
- 数据的输入
- 内置数据集
- 导入外部数据集
- @[toc]
- 基础
- 第一步:DATA(数据步)
- 第二步:PROC(过程步)
- 第三步:RUN/QUIT(输出步)
- 完整
- 基本语法
- sas文件扩展名
- 语句
- 变量名
- 变量类型
- 注释
- 日志
- 数据集
- 语法
- 数据集结构
- 数据的输入
- 内置数据集
- 导入外部数据集
个人blog-1: 拾忆生活
个人blog-2: 极简-拾忆生活
欢迎大家来踩,同步更新
学习来源:
https://www.w3cschool/
https://www.zybuluo/longfei/note/587247
基础
- data步——获取和整理数据
- 写proc步——分析数据
- 提交代码给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;
,那么这个程序在提交后也不会被执行。
- 会把前面读取到的所有data步或proc步的statement语句都执行完。如果一个程序里没有
-
当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(逻辑库)指定的路径
- 在会话结束后仍然存在
- 前半部分是SAS的 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入门学习
发布评论