《SAS编程与数据挖掘商业案例》学习笔记之四

5.set语句的应用(2个指针,一个pdv)

libname chapt3 'f:\data_model\book_data\chapt3';

data percent;

    if _n_ = 1 then

        set chapt3.summary(keep = cargosum);

    set chapt3.empcount;

    pctemps = numemps / cargosum;

run;

解读:编译后,内存中会出现双指针;同时生成一个pdv

首先在内存中开辟一个pdv,读取数据集summary的第一个观测,读取变量cargosum的值并保留;

再读取第二个数据集empcount,并计算pctemps=numemps / cargosum;输出数据并返回到data;

此时if语句不再执行,读取数据集empcount的第二条观测,并计算pctemps=numemps / cargosum;如此循环直到读完empcount

 

 在商业实战中最长见有两种情况:一种是按照索引匹配和更新数据;另一种是按照某一个变量排序,对排序变量实行set/set操作。

 

expenses含有flightid fltdate  expenses三个变量

incomes含有flightid fltdate  incomes三个变量

两个表关联一起的实现可以用proc sql的形式很容易的实现,但是当数据量大时,利用set/set语句的效率远远高于sql,尤其是对查询表简历索引之后。

 

 

proc datasets lib=chapt2;

modify income;

index create dteflt=(flightid fltdate)/nomiss unique;

quit;

 

data profit errors;

    set chapt3.expenses;

    set chapt3.income key = dteflt;

    if _iorc_ = 0 then do;

      profit =sum(income,- expenses);;

      output profit;

    end;

    else do;

      _error_ = 0;

      output errors;

    end;

run;

 

语句 key = dteflt是利用索引键来匹配两个表数据,自动生成的变量_iorc_ 0,表示匹配成功,_error_0表示无错误信息

总结如下:

对于两个表有相同的表结构且被查询的表已经建立了基于该相同变量的索引的情况下,set/set语句是最高效的方式;

主表的指针一般是从第一天一直扫描到最后一条,不走回头路,但是对于被查询表,可以根据索引跳跃数据指针;

对应的主表和建立索引的被查询表一般不再排序;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在相亲还要体检报告了?

1 伤害性极大(素材来源网络,侵删)▼2 相亲还要看体检报告?(素材来源网络,侵删)▼3 难以启齿的地名(素材来源网络,侵删)▼4 当知道你不回家之后&#xff08…

.NET 6新特性试用 | System.Text.Json序列化代码自动生成

前言几乎所有.NET序列化程序的实现基础都是反射。下列代码是Newtonsoft.Json的实现:protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) {JsonProperty property new JsonProperty();property.PropertyT…

js去除左右空格

function yanzheng(val) {return val.replace(/(^\s*)|(\s*$)/g, "");}function Inputchecking() {var account document.getElementById("txt_ACCOUNT");if (yanzheng(account.value) "") {alert(请输入账号);account.focus();return false;}…

UVa 264 - Count on Cantor

《算法竞赛入门经典》5.4.1的题目,大意是,给出一个数表,如下: 第一项是1/1, 第二项是1/2, 第三项是2/1, 第四项是3/1, 第五项是2/2.....给一个正整数n,求第n项。 设第n个…

《SAS编程与数据挖掘商业案例》学习笔记之五

六:merge语句的使用(一个指针,一个pdv) merge语句是横向合并数据集,合并前必须两个数据集都要按照合并变量进行排序; proc sort datachapt3.merge_a;by x;run; proc sort datachapt3.merge_b;by bx;run; data ed; merge chapt3.me…

他解决了物理学千年争端,成就肩比牛顿、爱因斯坦,但却鲜有人知......

全世界只有3.14 % 的人关注了爆炸吧知识电磁学是经典物理学的一部分,提到电磁学就不得不提经典电动力学创始人-麦克斯韦。麦克斯韦的名气好像并不如牛顿、爱因斯坦那样家喻户晓,毕竟当提到牛顿的时候,这个公式就如同条件反射似得浮现出来&…

Windows 11 全新 4K 壁纸发布

微软近日发布 Windows 11 全新主题包 「Pantone Color of the Year 2022」,包含 4 张经重塑的壁纸。微软表示:通过这四张使用 Pantone Color of the Year 2022,,PANTONE 17-3938 Very Peri 颜色,重新定制的 Windows 11 Bloom 壁纸…

android之在view中内嵌浏览器的方法

我要做的一个东西是在一个页面的中间嵌入浏览器,一开始不知道从哪里开始,因为以前用的都是Textveiw或者editVeiw之类的控件,而它们并不能用来显示网页的内容,怎么办呢? 首先想到的是:是不是有一个用来显示网…

CCNA综合实验(一):实验拓扑与要求

一、实验拓扑 屏幕剪辑的捕获时间: 2013/5/5 星期日 16:49 IP地址分配 IP地址为192.168.1.0/24 ,,根据本地网络的需求制定子网划分方案。要求如下: R2(带有WIC-2T模块)上开启环回接口loopback 0 地址为 192.168.X.20;R…

《SAS编程与数据挖掘商业案例》学习笔记之六

八:modify语句((一个指针,两个pdv)) merge语句和update语句对数据集横向合并的主要功能还只能体现在匹配访问上,如通过by语句,对每个by组中的匹配数据集进行修改或更新,对于非常庞大的数据集需要…

C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用开发过程。…

ASP.NET Web API中实现版本

一般来说,api 接口是提供给其他系统或是其他公司使用,不能随意频繁的变更。然而,需求和业务不断变化,接口和参数也会发生相应的变化。如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行。这就必须对api 接…

一个娃娃竟然拍出50万......

1 瞎说什么大实话(素材来源网络,侵删)▼2 这个娃娃50万用来求婚用(素材来源网络,侵删)▼3 当代年轻人的特别祝福▼4 在福字底下加一横(素材来源网络,侵删)▼5 冰激凌…

切图崽的自我修养-规范CSS元素命名

前言 为什么我刚才写的样式乱了?!如何给变量,文件命名是程序员的老大难问题。命名为什么会这么难,因为它太重要了。可以这么说,准确的命名可以提高代码的可读性,让人容易理解,方便调试&#xff…

批量获取域名解析地址socketthread

import threadimport socketdef getIP(name,lock):print [%s]:%s\n%(name,socket.gethostbyname(name))lock.release() #释放线程锁def main():#读取存放域名的文件,文件是按一行一个域名的方式记录的files open(rC:\Users\Administrator\Desktop\python_script\na…

《SAS编程与数据挖掘商业案例》学习笔记之七

九:put语句 可以输出变量信息到指定地点,包括输出到sas系统的日志窗口; 输出到file语句规定的外部文件 输出到sas系统的output窗口 单尾操作符,多用于input语句中,双尾操作符,多用于put语句中。 Data a; In…

使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器

从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能。细化了很多权限操作。 今天对这一块做个介绍。 要做一个认证管理,大概分为以下5步: 1. 定义你要保护的资源,一般是服务、函数,…

算法分析笔记

2019独角兽企业重金招聘Python工程师标准>>> 定义 定义&#xff1a; 若存在正常数 c 和 n<sub>0</sub> 使得当 N ≥ n<sub>0</sub> 时 T(N) ≤ cf(N)&#xff0c;则记为 T(N) O(f(N))若存在正常数 c 和 n<sub>0</sub> 使得当 …