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

相关推荐

  1. pandas学习笔记10

    2024-07-11 05:58:02       37 阅读
  2. yolov10 学习笔记

    2024-07-11 05:58:02       27 阅读
  3. Scala学习笔记10: 特质

    2024-07-11 05:58:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 05:58:02       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 05:58:02       108 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 05:58:02       91 阅读
  4. Python语言-面向对象

    2024-07-11 05:58:02       98 阅读

热门阅读

  1. Codeforces Round #956 (Div. 2) and ByteRace 2024

    2024-07-11 05:58:02       26 阅读
  2. 旅游 | 西岳华山

    2024-07-11 05:58:02       24 阅读
  3. 优化旅游服务热线系统以满足多样化需求

    2024-07-11 05:58:02       24 阅读
  4. vivado CONFIG_MODE、CONFIG_VOLTAGE

    2024-07-11 05:58:02       28 阅读
  5. 解锁SQL Server的迷宫:深入死锁的诊断与解决之道

    2024-07-11 05:58:02       28 阅读
  6. vite搭建vue2项目

    2024-07-11 05:58:02       26 阅读
  7. 基于STM32设计的智能手环(ESP8266+华为云IOT)178

    2024-07-11 05:58:02       26 阅读
  8. 代码优化(2)——小程序登录

    2024-07-11 05:58:02       28 阅读