在满足比较条件时,在数据集中添加空观察(行)

时间:2016-10-28 15:30:42

标签: 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     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. / p>

有一种简单的方法吗? 我有300对数据集,每个数据集包含44个观察值和4个变量, 所以我打算将它合并到一个宏或一个循环中。

谢谢你:)

示例代码:

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;

1 个答案:

答案 0 :(得分:0)

我认为这会给你你想要的东西。

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可能有重复值,这可能无法满足您的需求。