Merge 满足比较条件时在数据集中添加空观测值(行)

Merge 满足比较条件时在数据集中添加空观测值(行),merge,sas,data-manipulation,Merge,Sas,Data Manipulation,我有成对的数据集(A和B),但A总是有额外的观察值,这些观察值在B中被完全删除,这导致我丢失了B中变量“Seg”的原始值 例如: Dataset A Dataset B Desired dataset C: Seg Fz Seg Fz Seg Fz 1 2.3 1 2.3 1 2.3 2

我有成对的数据集(A和B),但A总是有额外的观察值,这些观察值在B中被完全删除,这导致我丢失了B中变量“Seg”的原始值

例如:

Dataset A             Dataset B               Desired dataset C:

Seg    Fz             Seg    Fz               Seg    Fz

 1     2.3            1     2.3               1    2.3
 2     9.2            2     1.3               2    .
 3     1.3            3     0.9               3    1.3
 4     11.4                                   4    .
 5     0.9                                    5    0.9
我需要将2个数据集(A和B)合并到1(C)中,并用缺少的值替换A的额外观测值,以保持“Seg”变量的顺序并获得所需的数据集C

有没有一个简单的方法可以做到这一点? 我有300对数据集,每个数据集包含44个观察值和4个变量, 所以我计划将其合并到宏或do循环中

谢谢:)

示例代码:

data A;
input Seg Fz;
datalines;
 1     2.3                           
 2     9.2                          
 3     1.3                           
 4     11.4                               
 5     0.9                                   
run;


data B;
input Seg Fz;
datalines;
1     2.3              
2     1.3               
3     0.9                                                                                
run;

我想这会给你你想要的

proc sql noprint;
     create table c as
            select a.seg,b.fz 
                   from a as a
            left join b as b
            on a.fz=b.fz
            order by a.seg;
quit;

但是要小心,如果数据集a或b中有重复的值,这可能无法满足您的需要。

您能否解释如何确定数据集C中要保留的值?比如为什么seg 4缺失而seg 3 1.3?在数据集c中,为什么seg 2缺失而seg 3 1.3,为什么seg 4缺失而seg 5.9?我将解释“多余”。这些数据来自于对患者的临床实验。由于干扰,数据集a中(由第三方)删除的观察结果被视为有偏差。但因为我在处理纵向数据,并试图正确地建模相关结构,所以数据的顺序以及缺失的观测值对我来说非常重要。这并不能回答任何问题。@DCR抱歉。我会尽量说清楚的。要保留的观测值是数据集B中的观测值。因此,包含在A中但不包含在B中的任何观测值都将替换为空值。同时保留A中“Seg”变量的值。非常感谢@DCR,它的作品!!!!我认为我的数据不可能重复。原始数字在小数点后有8位数字。(即3.72346857)因此其可能性极低。当然,我将手动添加重复项并进行测试,以查看并更好地理解这8行代码的作用。SQL程序万岁!!!:)