#SAS学习-数据加工处理-中
上篇文章讲了一部分SAS处理数据的函数,由于函数实在太多,所以我就大概计划分3篇文章进行叙述,现在这个是第2篇~这篇主要集中在过程步的函数讲解~
1)SAS过程步常用语句
大部分过程步都有一个必须的语句,也有可选的语句,比如打印语句:proc print,这两个词是必须的,但可选的语句也有很多。
① Proc语句
所有的语句的必须部分为proc+过程名,比如print、contents等。后面接一些可选项。
data=filename选项告诉SAS打印哪个文件,如果不加,则SAS默认打印最近使用的数据。
前面还可以加libname语句,建立一个对本地文件的链接(2.20),比如:
LIBNAME tropical 'c:\MySASLib';
PROC CONTENTS DATA=tropical.banana;
或者直接引用:PROC CONTENTS DATA='c:\MySASLib\banana';
② BY语句
BY语句只在过程proc sort中是必须的,它用来对观测值排序。其他过程BY告诉过程对变量进行分别分析,且是可选的。
另外,除了proc sort,其他过程都假设了数据已经进行了排序,所以如果数据还没有排序,那么在分析之前要用proc sort排序。
③ TITLE 和FOOTNOTE语句
这是为输出加上标题和脚注。最基本的title语句为:title ‘标题’,双引号、单引号皆可,比如:
TITLE 'This is a title';
如果标题中带有撇号,则需用双引号,或者将撇号换为双撇号:
TITLE ”Here’s another title”;
TITLE ’Here’’s another title’;
可以通过在title、footnote后面加上数字来添加多个标题和脚注:
FOOTNOTE3 ’This is the third footnote’;
但是小数字的标题会代替大数字的标题,如title2会代替title3。
④ Label语句
它可以为输出的变量加上标签,一个标签最大256字节,下面的代码为receivedate和shipdate创建了标签:
LABEL ReceiveDate=’Date order was received’
ShipDate=’Date merchandise was shipped’;
注意的是,在数据步中使用label语句,则标签会保存在数据集中;在过程步中使用,标签只在这个过程中有效。
⑤ 定制输出
使用系统选项,可以为输出设置诸如居中、日期、单行长度、页长度等。使用Output Delivery System,还可以改变输出的风格,以不同的格式输出(HTML、RTF),甚至改变输出的任何细节。
2)在过程步中使用where构建子集
如果在数据步中没有进行数据子集的生成,没关系,过程步也是可以有语句进行实现的,那就是where语句。
Where语句的基本形式为:
WHERE condition;
只有满足条件的观测值才进行proc过程。
一些使用最多的操作符及例子:
3)在过程步中进行数据排序
基本形式为:
PROC SORT;
BY variable-1...variable-n;
SAS首先会按照第一个变量排序,再对后面的排序。
Data=,out=用来指定输入和输出数据,如果缺失out=,则SAS会将排序后的数据集代替原来的数据集。下面的代码告诉SAS对数据messy排序,并将排序后的数据存在neat中:
PROC SORT DATA=messy OUT=neat;
选项nodupkey告诉SAS排序时删除重复值,比如:
PROC SORT DATA=messy OUT=neat NODUPKEY;
SAS默认是升序,如
BY StateDESCENDING City;
举个例子:
下面的数据显示了一些鲸鱼和鲨鱼品种的平均长度:
下面的代码读取并排序数据
输出结果为:
4)在过程步中进行数据打印
基本形式:PROC PRINT;
SAS默认打印最近使用的数据集,DATA=可以指定数据集:
PROC PRINT DATA=data-set;
SAS默认打印观测值数,noobs选项可以取消。SAS默认打印时用变量标签代替变量,用label可以改变取消:
PROC PRINT DATA=data-set NOOBS LABEL;
还有下面的选项:
① BY variable-list; 前提是数据必须进行排序
② ID variable-list; 指定观测变量
③ SUM variable-list; 打印变量总数
④ VAR variable-list; 指定打印哪部分变量以及打印顺序,默认打印全部。
这个还是也举个栗子~
有学生卖糖果的数据,Candy.dat,记录学生名、所属班级、销售日期、卖的糖果类型、卖出的糖果数。
下面的程序读取数据、计算每个学生赚得的利润(每买一块赚1.25美元),并用procsort按班级排序。接着在procprint语句中加入by,以分班级打印,加入sum,计算每个班级总利润:
输出结果为:
5)利用formats改变打印外观
打印数据时,SAS会自动为你安排最好的格式,小数点位数、空格等。当不需要默认格式时,可以用SAS formats改变打印的外观。
对于字符串、数值、日期变量,SAS有很多格式。比如可以用commaw.d格式打印有逗号的数字,用$w.格式控制打印的字符数,用MMDDYYw.格式将日期(以1960.1.1为基点的数字)打印成12/03/2003这样的格式。甚至可以将格式打印成十六进制、区位十进制、压缩十进制等。
SAS格式的普通形式为:
符号说明:$说明了是字符串、format是格式名、w是包括在小数点在内的长度、d是小数位数。句号非常重要,它用来区分格式名和变量名。
① Format语句
可以用format语句同时将格式和变量联系起来,用format+变量名+格式名,比如想要将格式DOLLAR8.2和变量profit、loss联系起来,把格式MMDDYY8.和格变量saledate联系起来:
FORMAT Profit Loss DOLLAR8.2 SaleDate MMDDYY8.;
Format可以用在数据步和过程步中,前者将把格式永久储存,后者只是临时储存。
注:DOLLAR8.2表示打印的结果字符数不超过8(数值+$)。
② Put语句
当写原始数据或者报告时,也可以在put语句中使用formats,在每个变量后面加上格式:
PUT Profit DOLLAR8.2 Loss DOLLAR8.2 SaleDate MMDDYY8.;
format语句可能是用得比较多的了,下面对这个语句可能用到的内容罗列一下:
下面就上面的内容举一下例子:
好了,over~
#SAS学习-数据加工处理-中相关推荐
- 计算机系统中数据加工过程中,数据库系统复习题-第1章绪论
使用数据库系统有什么好处?(填空题) 使用数据库系统的好处是由数据库管理系统的特点或优点决定的. 使用数据库系统的好处很多,例如可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的 ...
- C语言中数据在内存中的存储
要想了解数据在内存中的存储的话,首先应该了解数据的类型. 下面介绍C语言中数据类型: 1.C语言中的基本内置类型: char //字符数据类型 大小为1个字节 short //短整型 大小为2个字节 ...
- 特征重要性、特征集成+FeatureUnion、特征选择变换器+ColumnTransformer、标签特征变换+TransformedTargetRegressor、特征质量、自动学习数据中的特征
特征重要性.特征集成+FeatureUnion.特征选择变换器+ColumnTransformer.标签特征变换+TransformedTargetRegressor.特征质量.自动学习数据中的特征 ...
- 置信学习:让样本中的“脏数据“原形毕露
在实际工作中,你是否遇到过这样一个问题或痛点:无论是通过哪种方式获取的标注数据,数据标注质量可能不过关,存在一些错误?亦或者是数据标注的标准不统一.存在一些歧义?特别是badcase反馈回来,发现训练 ...
- cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤
mysql 如何对表排序 In this article, we will learn how we can sort and filter data using the WHERE clause a ...
- 小猪的Python学习之旅 —— 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中
小猪的Python学习之旅 -- 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中 标签:Python 一句话概括本文: 利用Excel存储爬到的抓取豆瓣音乐Top 250数据信息,还有 ...
- 数据库SQL语言学习--数据查询(持续更新中)
数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1. 启动SQL Server 2008中的 SQL Server Management Studio. 2. ...
- 医疗大数据在学习型健康医疗系统中的应用
点击上方蓝字关注我们 医疗大数据在学习型健康医疗系统中的应用 柴扬帆1,2, 孔桂兰1, 张路霞1 1 北京大学健康医疗大数据国家研究院,北京 100191 2 北京大学公共卫生学院,北京 10019 ...
最新文章
- Struts2.0下的客户端验证
- python数值型转换字符型_2.6 字符型常量
- 加载静态文件,父模板的继承和扩展(2017.11.3)
- java 减少内存_java中减少内存占用小技巧
- MNS消息服务计费处理参考
- uwp 获取listviewitem里的控件_[UWP]占领标题栏
- 两级页表如何实现地址转换
- javascript 判断string是否包含某个字符串
- python核心编程源代码
- pycharm无需汉化教程(无需下载汉化包)
- html引入思源黑体
- HDU 6405 Make ZYB Happy 后缀自动机 前缀和优化
- 【电商】电商后台---商品管理系统
- Python 实现简单虚拟跑步机计算消耗的能量
- java 高内聚低耦合_高内聚低耦合法则实例解析
- 【微服务】如何实现微服务集群的高可靠?
- 谷歌浏览器自带翻译网页插件没用了怎么办?这里有解决办法。
- android快牙原理,实测快牙的真实传输速度
- postman json格式文档转word表格文档
- [从头读历史] 第269节 诗经 卫风
热门文章
- 西安交通大学本科毕业论文答辩PPT模板
- 【软件测试自动化-QTP系列讲座 11】== AOM应用(一)+QuickTest+Automation ==
- Android应用优化方案一
- C#多线程之 线程池 ThreadPool介绍
- vue3 使用teleport报错 找不到‘parentNode‘节点(未解决)
- 高德地图label换行
- 实验及工程技术人员招聘 | 华南理工大学广州国际校区
- 国内某知名软件更新的安全分析
- 炫酷的VS Code毛玻璃效果
- Mac 批量重命名(增加前缀后缀)