热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SAS中的Order By  Proc Sort

SAS中的OrderBy-ProcSort1.排序procsortprocsort在按数据集中某一个变量或几个变量的升序或降序将记录重新排列,并把结果保存在输出数据集

SAS中的Order By - Proc Sort

1.排序proc sort
proc sort在按数据集中某一个变量或几个变量的升序或降序将记录重新排列,并把结果保存在输出数据集中,如果不另外指定输出数据集,则覆盖输入数据集。
在data步和proc步某些操作中,当需要用到by语句时,一般都需要源数据集按照by语句中的变量事先排序,这里就需要用到proc sort。

(1)语法格式
PROC SORT  ;
BY  variable-1 <... variable-n>;
proc sort一些常用的选项&#xff1a;
·数据集选项
data&#61; 输入数据集&#xff0c;缺省时使用最近创建的数据集
out&#61; 输出数据集&#xff0c;缺省时表示排序后覆盖源数据集
·排序序列选项
sortseq&#61; 指定排序的序列&#xff0c;这跟使用的操作系统有关&#xff0c;Windows/Unix都是ASCII编码&#xff0c;一般这个选项缺省就行&#xff1b;也可以直接在proc sort后面加上编码名称。
·修改排序次序的选项
reverse 使用由正常排序序列相反的排序序列对字符变量进行排序&#xff0c;可以被by语句中的descending选项取代&#xff0c;reverse只能用于字符变量。
equals|noequals 规定输出数据集中具有相同by变量的那些记录的次序&#xff0c;equals选项是保持在输入数据集中原来的相对次序&#xff0c;而noequals选项则没有这一限制。
·删除重复记录的选项
noduprecs 删除重复的记录&#xff0c;发生在排序后&#xff0c;将完全相同的记录删除。
nodupkey 删除重复的by变量记录&#xff0c;发生在排序中&#xff0c;sort过程读取输入数据集中的记录&#xff0c;在写入输出数据集时先比较by变量值&#xff0c;如有重复则部写入输出数据集。这个选项要小心使用&#xff0c;因为SAS会删除by变量重复的记录&#xff0c;而不管该记录是不是重复的&#xff0c;这样就会丢失有效的数据。
·其他选项
datecopy 保留数据集创建或修改的日期&#xff0c;缺省时排序也会被认为是修改&#xff0c;上次的修改时间就会被覆盖&#xff0c;可是有些时候我们并不希望SAS这么做。
force 强制排序&#xff0c;不管输入数据集是否已经排序或有索引&#xff0c;都进行重新排序
内存与磁盘优化选项排序在各种语言中是一种基本的算法&#xff0c;当数据集很大时会占用大量的计算机资源&#xff0c;这些选项提供算法在这方面的优化。

by语句
缺省情况下&#xff0c;是按照变量进行升序排列(ascending)&#xff0c;降序则要显性的用descending指明。
特别的是&#xff0c;这两个关键字应该写在变量的前面&#xff0c;而其他语言可能相反&#xff0c;如SQL将排序关键字放在变量之后。

(2)运行机制
proc sort会先检查输入数据集的排序信息&#xff0c;特别是sortedby&#61;选项&#xff0c;如果输入数据集提示已经按照by变量进行过排序&#xff0c;或者sort过程检测到数据集中记录的顺序按照by变量本来就是有序的&#xff0c;则proc sort就会偷懒&#xff0c;不进行排序&#xff0c;直接将输入数据集复制到输出数据集中&#xff1b;另外&#xff0c;如果输入数据集在by变量上已经创建索引&#xff0c;则也不进行排序&#xff0c;因为排序之后会破坏原来的索引。除此之外&#xff0c;proc sort才会进行排序。
那么&#xff0c;如果用户要强制sort过程进行排序呢&#xff1f;那就需要用到force选项了。
(3)实例
数据集按年龄大小进行排序&#xff0c;相同年龄的观测仍然按原来的次序。
proc sort data&#61;age equals;http://www.cda.cn/view/18248.html
    by age;
run;

转:https://www.cnblogs.com/amengduo/p/9587402.html



推荐阅读
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 本文介绍了蓝牙低功耗(BLE)中的通用属性配置文件(GATT),包括其角色、层次结构、属性、特性和服务等内容。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 1.前言PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议,CHAP在RFC1994中定义,是一种挑战响应式协议&#x ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
author-avatar
卧龙先生八斗才
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有