当前位置: 首页 > news >正文

base SAS programming学习笔记10(combine data)

1.一对一合并

基本格式如下:

        data output-data-set;

                set data-set1;

               set data-set2;(data-set1和data-set2可以是相同的数据集,可以添加多个set 语句来实现上述的一对一合并)

        run;

输出数据集结果如下:

a.会包含所有输入数据的变量名,如果数据集包含相同的变量名,则最后读入的值会覆盖前面读入的值;

b.新的数据集的观测数是以输入数据集最少观测数为准,数据集合并是以位置为前提,即第一行与第一行合并,因此读入最少数据集的结束读入数据标志就会停止执行DATA步导出数据集。

2.纵向合并

基本格式:

        data output-data-set;

                set data-set1 data-set2;(可以设置多个数据集)

        run;

a.合并的数据集必须为相同的类型,如果不是,则会报错;

b.多个输入数据集有相同变量名的话以第一个数据集长度、标签、format和informat为准;

3.交叉合并

基本格式如下:

        data output-data-set;

                set data-set1 data-set2;(可以是多个SAS数据集)

                by variables;

        run;

data-set1和data-set2需要提前按照By 语句的变量名进行升序排序。

在data-set1和data-set2 会按照by语句变量名按顺序读取。

4.横向合并

        

基本格式如下:

        data  output-data-set;

                merge data-set1 data-set2;

                by <descending> variables;(可以按倒序排序后横向合并数据集)

        run;

如果使用descending则表示变量名按倒序排列,但只对该descending 后连着的变量有用

5.数据横向合并的逻辑

        编译阶段:读入MERGE语句设置的输入数据集的相关信息,以及检查DATA步的程序,为合并后的数据创建PDV(程序向量),为MERGE语句中每个数据集创建记录指针(tracking  pointer)

        执行阶段:SAS会提前检查是否根据BY语句匹配,如果匹配,会放入对应的PDV里面,如果存在相同的变量名称,则来自于前面数据集变量值会决定该变量的类型、长度等,变量值则来源后面对数据集;如果不匹配,则会按顺序依次放入PDV内。

        当所有数据集里面BY 语句中的变量值均发生改变该才会将PDV的值设为缺失,否则会保留上一行的数据值。

如下图所示:

BY语句未在所有的数据集里面发生变化:

BY语句在所有的数据集里面发生变化:

使用IN=variable可以追踪观测的来源,该variable是个临时变量,不在SAS数据集里面存在,取值为0和1,如果输出数据集某行有贡献则取值1,否则为0;

        如下所示:

该程序表明在demog和visit两个数据集中共有BY 语句变量值的行数被输出到merged数据集中。

上述IF语句可修改如下:

第2个IF语句判断不为0或不为缺失的值

6.SET 语句还可以和DO 循环一起使用

该程序表示,每次执行DATA步则会首先执行IF语句,从第一行读入到最后一行,因为每次重复读入则只会在PDV中存在最后一行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java synchronized关键字介绍
  • Three 圆柱坐标(Cylindrical)和 视锥体(Frustum)
  • 聊一聊中小企业如何开展持续交付
  • 【C++修行之道】string类练习题
  • 用HttpURLConnection复现http响应码405
  • 【记录】LaTex|LaTex 代码片段 Listings 添加带圆圈数字标号的箭头(又名 LaTex Tikz 库画箭头的简要介绍)
  • 【深度学习基础】MacOS PyCharm连接远程服务器
  • 小白学webgl合集-Three.js加载器
  • nginx的重定向
  • 【Windows】实现窗口子类化(基于远程线程注入)
  • QImage显示图片像素
  • 技术文件国产化准备
  • [C++] 轻熟类和对象
  • 内网信息收集:手动、脚本和工具查IP、端口
  • 5-3.损失函数
  • Google 是如何开发 Web 框架的
  • 【刷算法】求1+2+3+...+n
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Akka系列(七):Actor持久化之Akka persistence
  • DOM的那些事
  • JavaScript-Array类型
  • javascript面向对象之创建对象
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Node + FFmpeg 实现Canvas动画导出视频
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • spring + angular 实现导出excel
  • Vue小说阅读器(仿追书神器)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 计算机常识 - 收藏集 - 掘金
  • 记录:CentOS7.2配置LNMP环境记录
  • 记一次删除Git记录中的大文件的过程
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何设计一个微型分布式架构?
  • 如何实现 font-size 的响应式
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小程序开发之路(一)
  • 一道面试题引发的“血案”
  • 阿里云服务器购买完整流程
  • #大学#套接字
  • %check_box% in rails :coditions={:has_many , :through}
  • (9)STL算法之逆转旋转
  • (k8s中)docker netty OOM问题记录
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (四)图像的%2线性拉伸
  • (算法)求1到1亿间的质数或素数
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET gRPC 和RESTful简单对比
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NetCore项目nginx发布
  • .net反混淆脱壳工具de4dot的使用
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET简谈设计模式之(单件模式)