SAS中的Order By - Proc
Sort

1.排序proc sort

proc sort在按数据集中某一个变量或几个变量的升序或降序将记录重新排列,并把结果保存在输出数据集中,如果不另外指定输出数据集,则覆盖输入数据集。

在data步和proc步某些操作中,当需要用到by语句时,一般都需要源数据集按照by语句中的变量事先排序,这里就需要用到proc
sort。

By - Proc Sort">

(1)语法格式

PROC SORT  ;

BY  variable-1 <... variable-n>;

proc sort一些常用的选项:

·数据集选项

data= 输入数据集,缺省时使用最近创建的数据集

out= 输出数据集,缺省时表示排序后覆盖源数据集

·排序序列选项

sortseq=
指定排序的序列,这跟使用的操作系统有关,Windows/Unix都是ASCII编码,一般这个选项缺省就行;也可以直接在proc
sort后面加上编码名称。

·修改排序次序的选项

reverse
使用由正常排序序列相反的排序序列对字符变量进行排序,可以被by语句中的descending选项取代,reverse只能用于字符变量。

equals|noequals
规定输出数据集中具有相同by变量的那些记录的次序,equals选项是保持在输入数据集中原来的相对次序,而noequals选项则没有这一限制。

·删除重复记录的选项

noduprecs 删除重复的记录,发生在排序后,将完全相同的记录删除。

nodupkey
删除重复的by变量记录,发生在排序中,sort过程读取输入数据集中的记录,在写入输出数据集时先比较by变量值,如有重复则部写入输出数据集。这个选项要小心使用,因为SAS会删除by变量重复的记录,而不管该记录是不是重复的,这样就会丢失有效的数据。

·其他选项

datecopy
保留数据集创建或修改的日期,缺省时排序也会被认为是修改,上次的修改时间就会被覆盖,可是有些时候我们并不希望SAS这么做。

force 强制排序,不管输入数据集是否已经排序或有索引,都进行重新排序

内存与磁盘优化选项排序在各种语言中是一种基本的算法,当数据集很大时会占用大量的计算机资源,这些选项提供算法在这方面的优化。

by语句

缺省情况下,是按照变量进行升序排列(ascending),降序则要显性的用descending指明。

特别的是,这两个关键字应该写在变量的前面,而其他语言可能相反,如SQL将排序关键字放在变量之后。

(2)运行机制

proc
sort会先检查输入数据集的排序信息,特别是sortedby=选项,如果输入数据集提示已经按照by变量进行过排序,或者sort过程检测到数据集中记录的顺序按照by变量本来就是有序的,则proc
sort就会偷懒,不进行排序,直接将输入数据集复制到输出数据集中;另外,如果输入数据集在by变量上已经创建索引,则也不进行排序,因为排序之后会破坏原来的索引。除此之外,proc
sort才会进行排序。

那么,如果用户要强制sort过程进行排序呢?那就需要用到force选项了。

(3)实例

数据集按年龄大小进行排序,相同年龄的观测仍然按原来的次序。

proc sort data=age equals;http://www.cda.cn/view/18248.html

    by age;

run;

SAS中的Order By - Proc Sort的更多相关文章

  1. Hive中的order by、sort by、distribute by、cluster by解释及测试

    结论: order by:全局排序,这也是4种排序手段中唯一一个能在终端输出中看出全局排序的方法,只有一个reduce,可能造成renduce任务时间过长,在严格模式下,要求必须具备limit子句. ...

  2. 2.12 Hivet中order by,sort by、distribute by和cluster by

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy 一.order by 对全局数据的排序,仅仅只有一个red ...

  3. SAS中的聚类分析方法总结

    SAS中的聚类分析方法总结 说起聚类分析,相信很多人并不陌生.这篇原创博客我想简单说一下我所理解的聚类分析,欢迎各位高手不吝赐教和拍砖. 按照正常的思路,我大概会说如下几个问题: 1.     什么是 ...

  4. PROC SORT

    PROC SORT DATA=输入数据集 <OUT=输出数据集><选项>; BY 关键变量; RUN; PROC SORT 语法如上,其中在尖括号中的可以不出现,也不会报错. ...

  5. Hive中的Order by与关系型数据库中的order by语句的异同点

    在Hive中,ORDER BY语句是对查询结果集进行整体的排序,最终将会产生一个reducer进行全局的排序,达到的最终结果是和传统的关系型数据库是一样的. 在数据量非常大的时候,全局排序的单个red ...

  6. mysql中的order by

    一.order by的原理 1.利用索引的有序性获取有序数据 当查询语句的 order BY 条件和查询的执行计划中所利用的 Index 的索引键(或前面几个索引键)完全一致,且索引访问方式为 ran ...

  7. hive的排序 order by和sort by

    在算法中,各个排序算法的复杂度都比较高,正常情况下为O (nlogn) ,所以当数据量特别大的时候,对数组进行排序消耗都很大. 因为hive的计算引擎MapReduce是分布式系统, 利用分布式的特点 ...

  8. 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY

    正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade   随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...

  9. SAS中常见的数组函数

    SAS中常见的数组函数有: dim dimk hbound hboundk lbound lboundk 数组函数计萁数组的维数.上下界,有利于写出可移植的程序,数组函数包括:dim(x) 求数组x第 ...

随机推荐

  1. Jenkins搭建,节点配置

     一.服务器安装jdk和Jenkins 二.安装完成后打开jenkins页面:http://localhost:8080,设置管理员密码后登陆进去. 三.系统管理->全局变量,勾选允许用户注册 ...

  2. hibernate validator参数校验&自定义校验注解

    参数校验:简单的就逐个手动写代码校验,推荐用Valid,使用hibernate-validator提供的,如果参数不能通过校验,报400错误,请求格式不正确: 步骤1:在参数对象的属性上添加校验注解如 ...

  3. AC自动机题单

    AC自动机题目 真的超级感谢xzy 真的帮到我很多 题单 [X] [luogu3808][模板]AC自动机(简单版) https://www.luogu.org/problemnew/show/P38 ...

  4. 天堂Lineage(單機版)從零開始架設教學 Installing Lineage 3.52 Server - On Windows

      1. [下載原始碼] Using RapidSVN 用checkout      http://l1j-tw-99nets.googlecode.com/svn/trunk/L1J-TW_3.50 ...

  5. 702:Crossing River (贪心)

    [题目描述] N个人过河,一次过去2个回来一个,给出每个人所需时间,问最小过河时间. [题目链接] http://noi.openjudge.cn/ch0406/702/ [算法] 一开始想样例是怎么 ...

  6. ecshop 广告调用的几种方式

    1,ECSHOP后台设置广告更换 前台调用 {insert name='ads' id=2 num=1} id值表达广告位置的id.num表示数量 2,在代码加函数 function getads($ ...

  7. 基于Xilinx Zynq的计算处理平台

    基于Xilinx Zynq XC7Z045 FFG 900的高性能计算模块 本模块基于Xilinx公司的FPGA XC7Z045 FFG 9000 芯片, 支持64bitDDR3, 容量2GByte: ...

  8. (ACM模板)二元组pair

    #include<iostream> #include<cstdio> #include<utility> using namespace std; typedef ...

  9. spring cloud学习笔记五 网关服务zuul

    网关服务是指,客户端发送的请求不用直接访问特定的微服务接口,而且是经过网关服务的接口进行交互,网关服务再去到特定的微服务中进行调用.   网关服务的路由功能和Nginx的反向代理一样,所有的服务都先会 ...

  10. webstorm9.0.3 注册码

    William 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJkeVJBuE5bqLEznccE4tet6tr RiyoMxDK8oDY93t ...