Merge SAS附加2个具有不同变量的数据集

Merge SAS附加2个具有不同变量的数据集,merge,sas,Merge,Sas,我有以下两个数据集: 表A: ID COL1 COL2 1 X X 2 X Y 3 Z Z 表B: ID COL1 COL3 1 X X 4 X Y 5 Z Z 我期待的结果是: ID COL1 COL2 COL3 1 X X 2 X Y 3 Z Z 4 X y 5

我有以下两个数据集:

表A:

ID  COL1 COL2
1   X     X
2   X     Y
3   Z     Z
表B:

ID  COL1 COL3
1   X     X
4   X     Y
5   Z     Z
我期待的结果是:

   ID    COL1 COL2 COL3
        1   X     X
        2   X     Y
        3   Z     Z
        4   X         y
        5   z         z
但是当使用下面的宏时,COL3会被截断

%macro append(dsn);
proc append base=tablea data=&dsn;
run;
%mend append;

%append(tableb);

PROC APPEND
的规则与仅使用
SET
语句得到的结果不同。其中一个规则是它不会修改基本数据集。因此它无法添加新变量。听起来你想要这个

data tablea ;
  set tablea tableb;
run;

我也考虑过SET语句,但这两个语句都是非常大的数据集,查询时间太长了。我相信还有其他选项(总是有的!)。但是如果你的DS像上面那样被分类,相信一个简单的
合并
by
ID
也能满足你的要求。然后在第3列中为ID值4和5创建缺少的值。但是,无法对速度发表评论,因为我不知道您的表有多大。由于您正在通过添加列来修改TABLEA的定义,因此无法避免必须重新写入数据。