假设有以下数据集:
data have;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 2 4
0001 21FEB2015 31DEC2015 0 . 2
0001 21FEB2015 31DEC2015 0 3 .
0001 01JAN2019 31DEC2019 0 6 9
0002 01JAN2015 31DEC2015 0 2 .
0002 01JAN2019 31OCT2019 1 . 2
0002 01JAN2019 31OCT2019 0 . 2
;
然后,我还有另一个看起来像这样的数据集,来自其他计算:
data have1;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 6 8
0002 01JAN2019 31OCT2019 1 4 2
;
有没有办法获得以下内容?
data have2;
input ID :$20. Admission :date09. Discharge :date09. Index Variable1 Variable2;
format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 1 6 8
0001 21FEB2015 31DEC2015 0 . .
0001 21FEB2015 31DEC2015 0 . .
0001 01JAN2019 31DEC2019 0 . .
0002 01JAN2015 31DEC2015 0 . .
0002 01JAN2019 31OCT2019 1 4 2
0002 01JAN2019 31OCT2019 0 . .
;
换句话说,我想用 have1(其中 Index = 1)中的值替换 have 中的值。have 中的其余部分应设置为“.”,以表示 have3。变量总数:为 50。为简单起见,这里仅显示 2 个。
先感谢您
您可以通过两种方式执行此操作:
让我们看一下这两者。
简单合并
我们希望通过键(即 的组合)进行合并
ID Admission Discharge Index
。首先,我们将对两个数据集进行排序,然后通过此键合并它们。如果 键组合匹配,我们将Variable1
和设置Variable2
为缺失。哈希连接
这与简单的合并非常相似,但不需要排序,并且性能最高。我们将把它当作
have1
一个查找表,并从中为每个匹配项提取值。如果我们没有找到匹配项,我们将把Variable1
和的值设置Variable2
为缺失。