2.SAS的语言构成
SAS程序语句中分为两类步骤:data步和proc步。
data步:产生SAS数据集。
proc步:对SAS数据集内的数据进行分析处理并输出结果。
1.基本结构
(1)语句构成:input x y $10.;
①SAS关键词:大部分语句用它来识别语句类型,如data,input,proc,infile。
②名字:变量名,数据集名,格式名,过程名,文件,库名等(N_表示数据步已执行过的次数)
③特殊字符串;
(2)算符
①比较算符:如果成立,运算结果为1,否则为0。
eg. if age>=16 then adult=1;else adult=0;
比较算符 | 算符含义 |
= | 等于 |
^= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
in | 等于列表中的一个 |
②算术算符:
算术算符 | 算符含义 |
** | 乘方 |
* | 乘 |
/ | 除 |
+ |
加 |
- | 减 |
③逻辑算符:
eg. x<y and c>0; x<y or c>0;not(A=B);
逻辑算符 | 算符含义 |
and(&) | 交 |
or(|) | 并 |
not() |
表示否定 |
④其他算符:
eg.4<>5=5; 4><5=4; 'china'||'2021'='china2021'
其他算符 | 含义 |
><(min) | 最小值 |
<>(max) | 最大值 |
||(join) |
连接两个字符 |
⑤运算次序:
括号里的→较高优先级的运算→相同优先级的运算,从左向右。
算符级别 | 算符 |
1 | **;+(作为前缀,表示“正”); -(作为前缀,表示“负”);^(非); <>; ><; |
2 | *;/; |
3 |
+; -; |
4 | || |
5 | <; <=; >; >=; =; ^= |
6 | & |
2.data步:产生一个或多个数据集。
(1)直接输入
@,@@表示行停留指示符。@表示SAS停留到下一个input(也不换行),@@能使停留的时间到下一个data步(也不换行)。
data temp; *命名建立的数据集work.temp;
input x y z@@; *引入变量xy,并且连续输入;
cards; *直接输入数据,数据块开始;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
; *数据块结束;
在一个data步内不换行,xyz一直循环取值。
data temp;*命名建立的数据集work.temp;
input x y z;*引入变量xy,并且连续输入;
cards;*直接输入数据,数据块开始;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
;*数据块结束;
每一行xyz按顺序取完三个值后放弃此行其他值。
data temp;*命名建立的数据集work.temp;
input x;
input y;
input z;*引入变量xy,并且连续输入;
cards;*直接输入数据,数据块开始;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
;*数据块结束;
run;
每个input表示另取一行取值,上述代码指x,y,z依次取第1,2,3行的第一个数字。
data temp;*命名建立的数据集work.temp;
input x@;
input y;
input z;*引入变量xy,并且连续输入;
cards;*直接输入数据,数据块开始;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
;*数据块结束;
run;
x后的@使得下一个input的y取值不换行,但y后没有@,z换行取值。
(2)读取外部文件
infile '外部文件的所在位置及名称';
input 变量名1 变量名2 ...;eg.
data temp;
infile 'c:\user\temp.dat';
input x y@@;
run
(3)从已经建立的SAS数据集中抽取部分变量形成新的子集——set
*从adult文件中抽取sex相关信息,生成males,females表;
data males females;
set adults;*从文件adult中读取数据;
if sex='m' then output males;
if sex='f' then output females;
run;
(4)data步的语句及类型:文件操作语句,运行语句、控制语句和信息语句。
a.文件操作语句:用于输入数据集或者从这个data步输出。
文件操作语句 | 语句作业 |
data | 告诉sas开始data步,并创建一个数据集 |
input | 描述数据行或外部输入文件上的记录 |
cards | 标志数据行的开始 |
put | 描述sas输出行的格式 |
by | 规定数据集被分组处理,by对分组进行定义 |
set |
从一个或几个sas数据集中读取 |
merge | 从两个或两个以上数据集合并为单个观测 |
infile | 识别外部文件,读入原始输入数据 |
b.运行语句:用于创建或修改变量,或者选择一部分观测来创建数据集。
文件运行语句 | 作用 |
delete | 从正被创建的数据集中删除观测 |
stop | 停止产生当前的数据集 |
where | 在进入data步前选择观测 |
output | 产生新的观测 |
remove | 从某个sas数据集中删除一个观测 |
replace | 替代观测 |
c.控制语句:①对一些确定的观测跳过一些语句;②改变被执行语句的次序,实现从程序的一部分转移控制到另一部分。
文件控制语句 | 作用 |
do |
建立一个语句,能够作为一个语句去执行 |
end | 标记一个do组或select组结束 |
select | 有条件地执行几个sas语句中的一个 |
go to | 使sas跳到本程序步带有标号的语句,并在这里继续执行 |
if then/else | 有条件地执行一个sas语句 |
d.信息语句:给出关于数据集或正被创建的数据集的附加信息。不是执行语句,出现在data步的任何地方,且具有同样功能。
文件信息语句 | 作用 |
array | 定义一组能够用相同方法处理的变量 |
informat | 对存储变量值规定了输入格式 |
format | 对输出变量值规定格式 |
length | 规定用来存储sas变量的字节数 |
label | 把描述性标签与变量联系起来 |
drop | 指出从数据集或分析中被删除的变量 |
keep | 在数据集或分析中被保存的变量 |
rename | 改变数据集中一些变量的名字 |
3.proc过程步
通常只需要 :一个proc语句(proc sas过程名)+一个run
eg.proc print;
run;
(1)sas过程名及作用
过程名 | 作用 | 必要语句 |
means | 计算基本统计量 | proc means;var x;run; |
chart | 计算次数分布表,次数分布图 |
proc chart;hbar x;run; |
univariate plot |
正态分布检验 | proc univariate plot;var x;run; |
数据输出 | proc print;run; | |
sort | 数据排序 |
proc sort;run; |
tabulate | 制作表格 | 不理解代码,之后再补 |
anova | 方差分析 | |
GLM | 协方差分析 | |
nested | 嵌套设计的方差分析 | |
corr | 相关系数计算 | proc corr;var x y;run; |
plot | 相关点式图的绘制 | |
cancorr | 典型相关分析 | |
reg | 直线回归 | |
cluster 可选择:average、wards、density、single、twostage |
聚类分析 可选择:类平均法、重心法、离差平均和法、密度估计法、最短距离法、两阶段密度估计法 |
|
fastclus | 动态聚类分析 | |
standard | 数据标准化 | |
princomp | 主成分分析 | |
factor | 因子分析 | |
ttest | t检验 | |
npar1way | 秩和检验 | |
freq | 检验 | |
logistic | logistic回归检验 | |
stepdisc | 逐步判别分析 | |
candisc | 典型判别分析 |
(2)告诉proc需要处理的数据集
如果处理最近创建的数据集:proc print;run;
如果处理之前创建的或者多个数据集:proc print data=score;run;
(3)告诉proc需要处理的变量
若是所有变量:不需说明;
若是指定变量:需使用var语句指出要处理的变量名。
proc print data=score;
var idnumber score;*仅显示上述两个变量;
run;
(4)是否分组处理数据
若需要分组处理数据,必须用by分类排序,在进行其他操作。
proc sort data=score;*对score数据集排序;
by sex;*按照sex;
run;
proc means data=score;*对分类后的score数据集求均值;
var score;*只对score变量分类求均值;
by sex;
run;
2.SAS的语言构成相关推荐
- saspython知乎_python学习笔记---linux/windows调用sas程序
--------仅用于个人学习知识整理和sas/R语言/python代码整理 --------文章使用数据都为脱敏模拟数据 1.windows下 1.1 安装sas kernel: 跑偏了一下 其实不 ...
- 一家商业数据分析公司SAS,如何保持了40年的持续增长?
有这样一家神奇的软件公司,从40年前创业伊始,就专注于创造数据分析的商用消费市场,为此开发了一整套软件平台以及230多种软件产品,把深奥数学原理广泛用于各类商业决策,让没有数学背景的人也能很容易用上数 ...
- java 调用 sas_通过JAVA、VB访问SAS IOM服务器
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 通过IOM("Integrated Object Model" )服务器,没有必要使SAS安装在本地系统 ...
- python进行对应分析_机器学习算法---对应分析
--------仅用于个人学习知识整理和sas/R语言/python代码整理 --------该文章首发于csdn 正在迁移优化文章中 1.前言 对应分析,主要适用于有多个类别的分类变量,可以揭示同一 ...
- 大数据分析学习之七天玩转SAS-张璇-专题视频课程
大数据分析学习之七天玩转SAS-674人已学习 课程介绍 本课程涉SAS编程基础.SAS数据获取与数据集操作.SAS变量操作.SAS观测值操作.SAS数据集管理.SAS数据汇总与展现. ...
- 业务相关--vintage
vintage整理 --------仅用于个人学习知识整理和sas/R语言/python代码整理 ####1 . 前言 Vintage表,将不同时间层面的顾客拉平到同一时间周期上进行比较,观察不同入口 ...
- 统计分析--对应分析
统计分析–对应分析 --------仅用于个人学习知识整理和sas/R语言/python代码整理 1.前言 对应分析,主要适用于有多个类别的分类变量,可以揭示同一个变量各个类别之间的差异,以及不同变量 ...
- R语言使用haven包的read_spss函数读取spss格式数据、使用haven包的read_sas函数读取SAS格式数据、使用haven包的read_dta函数读取Stata格式数据
R语言使用haven包的read_spss函数读取spss格式数据.使用haven包的read_sas函数读取SAS格式数据.使用haven包的read_dta函数读取Stata格式数据 目录
- 科普:SAS是什么语言
SAS语言是一种用于数据分析和统计建模的程序设计语言.SAS的全称为"统计分析系统"(Statistical Analysis System),是由美国SAS Institute公 ...
最新文章
- java-高并发解决方案
- c strlen C++ strlen
- Cadence Allegro PCB 铺铜(覆铜)Shape呈格点状填充而不是完整全铜显示问题–Allegro技巧...
- typora 字体颜色_Typora 使用教程
- WDS服务不能启动-----Service-specific error code 1056767740
- wince6.0 OK6410 启动NandFlash路径下的程序快捷键
- windows安装Pentaho Server
- cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘错误
- 【玩转微信公众平台之中的一个】序章(纯粹扯淡)
- 1483套求职个人简历PPT模板免费下载网址
- maven报错The JAVA_HOME environment variable is not defined correctly
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付
- 2020年部编人教版小学一年级语文(上册)全部知识点汇总
- scratch学习-基础-认识scratch
- Android 自定义计时器
- (错误)SyntaxError: invalid syntax
- BIM技术在住宅园区物业管理中的应用及其优势
- php5.4支持反代,用免费的香港php虚拟主机反代美国鸡建站,真香~~
- linux的垃圾箱是哪个文件夹,Ubuntu命令行的垃圾箱Trash CLI,远离 rm 命令误删除重要文件的阴影...
- python爬虫库是什么意思_Python爬虫基础-两个实用库
热门文章
- 东南大学计算机复试被刷概率,这些考研复试的雷区考生千万别碰,即使初试得高分,被刷概率也大...
- 最全的搭建Java的开发环境以及eclipse安装配置开发工具
- leetcode 5370. 设计地铁系统(C++)
- OpenSSL 编程 二:搭建 CA
- 金蝶云二开引入excel的方法
- matlab如何求tan的反函数,为什么用MATLAB finverse函数求反函数出现了问题
- 安徽师范大学学python_安徽师范大学2019年各省各专业录取分数线
- 知乎高赞:35岁失业的中年人,都去了哪儿?
- 清华大学计算机接收调剂吗,2018年清华大学校内接收调剂生信息公布
- [CVPR2021-best]GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields