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

news2024/11/15 17:58:06

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中存在最后一行。

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

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

相关文章

Linux 系统 CPU 100% 异常问题,能否用一个 Shell 脚本完美解决?

昨天下午突然收到运维邮件报警&#xff0c;显示数据平台服务器cpu利用率达到了98.94%&#xff0c;而且最近一段时间一直持续在70%以上&#xff0c;看起来像是硬件资源到瓶颈需要扩容了&#xff0c;但仔细思考就会发现咱们的业务系统并不是一个高并发或者CPU密集型的应用&#x…

【linux服务器篇】-Redis-RDM远程连接redis

redis desktop manager 使用远程连接工具RDM连接redis 市面上比较常见的其中一款工具redis desktop manager 简单的说&#xff1a; Redis Desktop Manager 简单的来讲就是Redis可视化工具&#xff0c;可以让我们看到Redis中存储的内容。 redis desktop manager是一款功能强…

《梦醒蝶飞:释放Excel函数与公式的力量》10.2 COMPLEX函数

第二节 10.2 COMPLEX函数 10.2.1函数简介 COMPLEX函数是Excel中的一个工程函数&#xff0c;用于将实部和虚部组合成一个复数。复数广泛应用于工程、电气、物理等领域&#xff0c;COMPLEX函数提供了方便的复数表示和计算方法。 10.2.2语法&#xff1a; COMPLEX(real_num, i_…

AcWing 1073:树的中心 ← 树形DP

【题目来源】https://www.acwing.com/problem/content/1075/【题目描述】 给定一棵树&#xff0c;树中包含 n 个结点&#xff08;编号1~n&#xff09;和 n−1 条无向边&#xff0c;每条边都有一个权值。 请你在树中找到一个点&#xff0c;使得该点到树中其他结点的最远距离最近…

nvm 管理多版本 node

1、下载 先不安装node 下载 nvm 1.1.10-setup.zip 解压&#xff1a;nvm&#xff1a;https://nvm.uihtm.com/ 新建nodejs/node、nodejs/nvm文件夹用于存放node版本和nvm安装路径 安装nvm&#xff1a;上述链接有安装教程 查看是否安装成功&#xff1a;重新打开cmd 输入 nvm nv…

西瓜杯CTF(1)

#下班之前写了两个题&#xff0c;后面继续发 Codeinject <?php#Author: h1xaerror_reporting(0); show_source(__FILE__);eval("var_dump((Object)$_POST[1]);"); payload 闭合后面的括号来拼接 POST / HTTP/1.1 Host: 1dc86f1a-cccc-4298-955d-e9179f026d54…

044基于SSM+Jsp的个性化影片推荐系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

鼠标点击触发-----以控制开灯、宝箱触发为例

开灯 当点击时触发开灯效果 &#xff08;不用设置触发器&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine;public class OpenLight : MonoBehaviour {public Transform light;bool isOpen;private void OnMouseDown(){if (!isOpe…

k8s 部署RuoYi-Vue-Plus之server部署

1.先使用项目编排构建镜像, 修改prod使用的mysql, redis地址 获取运行的服务 kubectl get svc -n ruoyi对应连接修改 然后运行打包package命令, 生成jar包, 再打包为docker容器, 上传到所有节点上, 也可以上传到个人私有仓库 2.部署server-deploy.yaml 镜像名自行修改, apiV…

【免费的车间数据监控大屏】车间管理的新利器,让生产效率一目了然

面对生产车间里各种繁杂的数据&#xff0c;你不会还在用Excel敲击一个个无聊的数据吧&#xff1f;怎么不试试生动形象的车间数据看板呢&#xff1f; 在繁忙的车间里&#xff0c;每一寸空间都跳动着生产的脉搏&#xff0c;而车间数据监控看板&#xff0c;就像是这个舞台上的“智…

C++deque容器

文章目录 deque容器概念deque操作deque对象的带参数构造deque头部和末尾的添加移除操作deque的数据存取deque与迭代器deque赋值deque插入deque删除 deque容器概念 deque是双端数组&#xff0c;而vector是单端的。 deque头部和尾部添加或移除元素都非常快速, 但是在中部安插元…

Mysql数据库两表连接进行各种操作

一&#xff0c;创建两个表emp和dept&#xff0c;并给它们插入数据 1.创建表emp create table dept (dept1 int ,dept_name varchar(11)) charsetutf8; 2.创建表dept create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int) cha…

电脑清理c盘内存空间怎么清理免费 怎么清理c盘的垃圾文件又不删除有用文件

在计算机使用过程中&#xff0c;随着时间的推移&#xff0c;C盘空间可能会被各种临时文件、缓存和无用的注册表项占用。这不仅会导致C盘空间不足&#xff0c;还可能影响计算机的性能。那么怎么样清理C盘内存空间&#xff0c;怎么样清理C盘的垃圾避开系统文件呢&#xff1f; 一…

手机自带录屏在哪?6个软件教你快速进行手机录屏

手机自带录屏在哪&#xff1f;6个软件教你快速进行手机录屏 手机自带的录屏功能可以让你轻松录制屏幕上的内容&#xff0c;记录游戏过程、制作教程或捕捉其他重要时刻。不同品牌的手机可能在不同位置提供录屏功能。以下是一些常见的手机品牌及其录屏功能位置&#xff0c;以及一…

【python 学习】快速了解python内置类型

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、内置类型的介绍1.1 类型体系1.2 空类型和None1.3 布尔值 二、内置类型的运算2.1 布尔运算2.2 比较运算符比较…

Avalonia开发实践(二)——开发带边框的Grid

一、开发背景 在实际开发工作中&#xff0c;常常会用到Grid进行布局。为了美观考虑&#xff0c;会给每个格子加上边框&#xff0c;如下图&#xff1a; 原生的Grid虽然有ShowGridLines属性可以控制显示格子之间的线&#xff0c;但线的样式不能定义&#xff0c;可以说此功能非常…

人声提取软件有哪些?4种人声提取软件轻松提取人声

在数字音乐与视频制作日益盛行的今天&#xff0c;人声提取软件成为了许多创作者不可或缺的工具。无论是想要从复杂的音乐中分离出纯净的人声&#xff0c;还是希望从视频中提取出精彩的对话片段&#xff0c;一款简单有效的人声提取工具尤为重要&#xff0c;下面给大家分享4种简单…

WTM的项目中EFCore如何适配人大金仓数据库

一、WTM是什么 WalkingTec.Mvvm框架&#xff08;简称WTM&#xff09;最早开发与2013年&#xff0c;基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低&#xff0c;代码风格不统一的问题。2017年9月&#xff0c;将代码移植到了.Net Core上&…

三菱FX3U进阶课程-运动控制讲解

如果你不会用三菱FX3U系列plc做运动控制&#xff0c;不会控制步进电机、不会控制伺服电机&#xff0c;那来学习本课程就对了&#xff0c;课程带你的价值是&#xff1a; 1、究竟PLC是怎么控制得了步进电机、伺服电机的&#xff1f;好奇怪啊&#xff0c;为啥别人会&#xff0c;我…

WANGLS

DHCP 动态主机配置协议 原理 网络 网络是双向的,网络是有方向的 广播;广播是由种类的,广播是有范围的的 租约的建立——租约的相应、租约的选择——租约的完成 租约的建立:租约的请求 有客户端发出 DHCP discover 广播、寻找服务器 租约的响应 收到响应,不是服务器,…