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

news/2024/7/23 8:24:49 标签: 学习, 笔记

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.niftyadmin.cn/n/5546338.html

相关文章

比较(六)利用python绘制径向柱图

比较&#xff08;六&#xff09;利用python绘制径向柱图 径向柱图&#xff08;Circular Barplot&#xff09;简介 径向柱图基于同心圆网格来绘制条形图&#xff0c;虽然不如普通条形图表达准确&#xff0c;但却有抓人眼球的效果。其衍生的南丁格尔玫瑰图则广为人知。 快速绘制…

MySQL8.0~open_files_limit 和 innodb_open_files 参数生效取值标准

前置条件 设置参数 /etc/security/limits.conf中设置如下 * soft nofile 100001 * hard nofile 100002 root soft nofile 100001 root hard nofile 100002 mysql soft nofile 65535 mysql hard nofile 65535my.cnf中设置如下 table_open_cache5000 open_files_limit20000 i…

仕考网:公务员体检对视力有要求吗?

公务员招聘过程中的体检标准对视力有具体要求&#xff0c;根据不同的岗位职责有所差异。通常情况下&#xff0c;如果申请者双眼经过矫正后视力均低于4.8(小数视力0.6)&#xff0c;则会被视为不合格。 对于某些特殊岗位&#xff0c;如J察等&#xff0c;单侧裸眼视力若低于4.8也…

MySQL-数据库管理:优化、安全、合规与迁移的全面解析

1. 数据库设计 1.1 需求分析 数据库设计的第一步是深入理解应用的需求。这通常涉及到与项目团队&#xff08;包括产品经理、开发者、业务分析师等&#xff09;的紧密合作&#xff0c;以确保数据库设计能够准确地反映业务需求。需求分析阶段的关键活动包括&#xff1a; 收集信…

CC2利用链分析

分析版本 Commons Collections 4.0 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 CC2是在CC4的基础上做了一点改动&#xff0c;和之前CC3结合CC1 InvokerTransformer一样的。CC3利用链分析 因为TemplatesImpl是可序列化的&#xff0c;利用反射把Template…

Java面试八股之描述一下MySQL使用索引查询数据的过程

描述一下MySQL使用索引查询数据的过程 1.解析查询语句与查询优化 用户提交一个 SQL 查询语句&#xff0c;MySQL 的查询解析器对其进行词法分析和语法分析&#xff0c;生成解析树。 查询优化器根据解析树、表结构信息、统计信息以及索引信息&#xff0c;决定是否使用 B树索引…

根据H在有限域GF(2^m)上求解生成矩阵G

原理 有时间再补充。 注1&#xff1a;使用高斯消去法。如果Py不为单位阵&#xff0c;则说明进行了列置换&#xff0c;此时G不是系统形式。 注2&#xff1a;校验矩阵H必须是行满秩才存在对应的生成矩阵G&#xff0c;且生成矩阵G通常不唯一。 matlab实现&#xff1a;只做列置…

Elasticsearch 8 支持别名查询

在 Elasticsearch 8 中&#xff0c;使用 Java 高级 REST 客户端进行别名管理的过程与之前的版本类似&#xff0c;但有一些API细节上的变化。以下是如何使用 Java 和 Elasticsearch 8 进行别名操作的例子&#xff1a; 引入依赖 确保你的项目中包含了 Elasticsearch 的高级 RES…