Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SAS Join(Proc sql) PK Merge(Data Step)

SAS Join(Proc sql) PK Merge(Data Step)

作者头像
Setup
发布于 2019-10-21 09:10:04
发布于 2019-10-21 09:10:04
1.8K0
举报
hi

中午好!

今天给大家带来的是一SAS基础篇的内容!

多表的联合

Proc Sql Join

PK

Data Step Merge



So,PK开始


测试程序就得有数据

先制造数据,如下

proc delete data=work._all_;quit;

data ICF;

length CN $2. DN $5. ICFDAT $10.;

input CN $ DN $ ICFDAT $ ;

Cards;

01 01001 2017-11-11

01 01002 2017-11-12

01 01003 2017-11-13

01 01004 2017-11-14

01 01005 2017-11-15

01 01006 2017-11-16

;

run;

data DM;

length CN $2. DN $5. BIRTHDAT $10.;

input CN $ DN $ BIRTHDAT $ ;

Cards;

01 01001 1993-11-11

01 01002 1993-11-12

01 01007 1993-11-17

;

run;

<DM>

<ICF>


  • Merge If a;

data Temp1_2;

merge ICF(in=a) DM(in=b);

by cn dn;

if a;

run;

<Sql实现方法>

proc sql ;

create table Temp1_1 as

select distinct a.*,b.BIRTHDAT from ICF as a

left join DM as b

on a.cn =b.cn

and a.dn =b.dn ;

quit;


  • Merge If b;

data Temp1_2;

merge ICF(in=a) DM(in=b);

by cn dn;

if b ;

run;

<Proc Sql实现同样的效果>

proc sql ;

create table Temp1_1 as

select distinct b. *,a.*

from ICF as a

right join DM as b

on a.cn =b.cn

and a.dn =b.dn ;

quit;


  • Merge if a and b;

data Temp1_2;

merge ICF(in=a) DM(in=b);

by cn dn;

if b and a ;

run;

<proc Sql实现相同的效果>

proc sql UNDO_POLICY=NONE;

create table Temp1_1 as

select distinct *

from ICF as a, DM as b

where a.cn=b.cn and a.dn=b.dn;

quit;


  • Merge IF a or b;

data Temp1_2;

merge ICF(in=a) DM(in=b);

by cn dn;

if b or a ;

run;

<Proc Sql 同样的效果>

proc sql ;

create table Temp1_1 as

select distinct coalesce(a.cn,b.cn) as cn,coalesce(a.dn,b.dn) as dn,*

from ICF as a

full join DM as b

on a.cn =b.cn

and a.dn =b.dn ;

quit;



常见的Merge用法好像就这么多!

如果还有其他的,可能就是不常见的!

因为我也没见过!

虽然说我见识可能不多!

但这些差不多够用了!

Proc Sql 还有很多用法<以后有机会再说>

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SAS-Sql的这些用法你都会了么?
见上图:第一部分是一个简单的查询结构,第二部分小编设置快捷键(输入Sql后)自动弹出的结构(一个左连接的基本结构),快捷键的设置见小编历史推送(点击此处自动跳转:快捷键设置)。基本结构是这样的,基本就是这样的。还是用例子个程序来介绍在SAS里面的用途。
Setup
2019/10/21
5.8K0
SAS-Sql的这些用法你都会了么?
SAS-生物等效性PK分析程序合集
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍近期小编整理了一下生物等效性(BE)试验中PK分析部分的常规处理程序。于是就来分享一下这部分Winnonlin上的操作以及对应的利用SAS实现的程序。
Setup
2021/04/20
6.8K0
SAS-生物等效性PK分析程序合集
SAS-一条群消息引发的思考
看上图,某群友提出将table1的结构转换成table2的结构,这个是一个很明显的转置的操作,也并不特别明显,但是还是很明显的。
Setup
2019/10/21
5750
SAS-新规试行下诞生的程序
昨日,《药物临床试验数据递交指导原则》(试行)版正式公布了,在小编阅读后,于是本文因时而生了。
Setup
2020/07/24
2.2K0
SAS-新规试行下诞生的程序
SAS-如何找出数据集超长变量及观测,并自动进行变量的拆分...
前段时间有人给小编提了一个需求,找出数据集中长度超过200字节的变量,并对变量进行拆分...这个需求当然不难,但是还是分享给大家~主要最近没写啥程序,也就没学到啥新的技能...关于变量长度的拆分,我想也是一个常见的问题。
Setup
2019/10/20
3.9K0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
版权声明:本文为王小雷原创文章,未经博主允许不得转载 https://blog.csdn.net/dream_an/article/details/50400970
王小雷
2019/05/27
7040
创建SAS Format的几种方法
不管是做AD还是TFL,我们经常会碰到要创建Format。当Format中条目不多时我们可以直接用PROC FORMAT来创建,但是当条目很多时,这种方法就不方便了。下面详细介绍其他几种方法:
专业余码农
2020/07/15
1.8K0
Apache-Flink深度解析-TableAPI
SQL和Table API是Apache Flink中的同一层次的API抽象,如下图所示:
王知无-import_bigdata
2019/03/26
1.3K0
SAS︱数据索引、数据集常用操作(set、where、merge、append)
数据索引的创建有三种方式:data步骤、sql步骤、datasets步骤。 其中还是有点困惑在data与datasets的区别之上,datasets是对逻辑库中数据集进行操作的方式,而data之后是代表程序的开始。
悟乙己
2019/05/27
7.1K0
SAS-如何实现多选值FORMAT的添加
在处理数据时,有时候会遇见变量值为多选的情况,此时如果要给变量添加上format,就略微麻烦许多。今天小编打算分享一段针对此种情况自动生成format的程序。
Setup
2019/10/20
2.7K1
SAS-100种数据转置的方法,你在用哪种?
最近在论坛、群里面经常看到有人问数据转置相关的问题,那么今天小编就在来说一说数据集的转置,之前虽然也写过proc transpose相关的推文,那么今天我还要写...不仅仅要写这个!我还要写小编在数据转置上的成长历程...
Setup
2019/10/21
3.4K0
根据变量值拆分SAS数据集
前几天看到一个群友提的一个问题,根据数据集中的某一个变量的值将一人大数据集拆分为多个小数据集(见上图第15题),实现这一目的的方法有多种,最常见的方法应该是宏循环,下面以根据变量SEX来拆分数据集SASHELP.CLASS为例介绍其他几种方法:
专业余码农
2020/07/16
2.9K0
根据变量值拆分SAS数据集
SAS-时药曲线的绘制(完)
本文是上一篇的推文的续篇,本篇推文将主要介绍GTL绘制受试者维度的时药曲线(画拼图),并分享小编刚出炉的,还热腾腾的自动画图的宏程序。点击
Setup
2019/10/20
3.5K0
SQL基础用法(实例一)
1 /* 2 3 4 2006年10月01日 5 6 SQL Server 数据库的基本操作 7 (1) 数据库的创建 8 (2) 数据表的创建以及相关约束的指定(含临时表) 9 (3) 数据的添/删/改 10 (4) 数据的查询 11 12 */ 13 14 (0)创建数据库 15 -- 指定数据库名称 16 -- (注:如果数据库名中包含空格可以使用[]将其标示) 17 create database [Super WC] 18 -- 关于
用户1112962
2018/07/03
9770
SAS- 100种数据compare的方式,你在用哪种?
小编是医药行业的,所以小编的推送涉及的知识也多为SAS在临床研究中的运行及SAS数据清洗等相关的程序,在临床试验中,很多SOP相对完善的公司,出于对数据质量的把控,一般项目都会采用double programming,一个项目会有多个人参与,写俩份独立的程序,最终会对结果进行compare,今天的主题就是数据的compare.
Setup
2019/10/21
2.2K0
SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/52839677
悟乙己
2019/05/27
4.3K0
开发人员掌握了这个技术,SQL效率会有几百倍的性能提升
完成相同业务逻辑的SQL,写法不同,执行效率可能会有几百上千倍的差距,今天我们通过几个案例来说明一下:
老虎刘
2022/06/22
2900
开发人员掌握了这个技术,SQL效率会有几百倍的性能提升
SQL Server 监控统计阻塞脚本信息
数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大。阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象。 但是阻塞的时间和出现频率要控制在一定的范围内,阻塞持续的时间过长或阻塞出现过多(过于频繁),就会对数据库性能产生严重的影响。
全栈程序员站长
2022/07/05
8740
SQL Server 监控统计阻塞脚本信息
使用 go-randgen 测试 join 查询
在数据库的查询中,join 是最常用的查询之一,由于 join 算法实现的复杂性,出现问题的概率较大,我们对 TiDB 中出现过的 join 问题进行分析,将易发生问题的场景归为如下几类 :
PingCAP
2020/12/25
9390
SAS-临床试验中编码频数表的自动输出
今天要写的是关于SAS在临床试验中自动输出频数表的程序。在临床试验中,我们会对不良事件与合并用药进行医学编码,编码后,我们会对编码进行分级频数汇总。汇总表长的什么样子呢,来见下图!
Setup
2019/10/21
2.2K0
相关推荐
SAS-Sql的这些用法你都会了么?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档