假设有一个包含 x 列(变量)的数据集“DB1”。您有一个名为“my_identifiers”的变量。然后,您有另一个数据集“DB2”,其中有一个名为“my_identifiers_subset”的变量。然后,如果 DB2 中的“my_identifiers_subset”值位于 DB1 中的“my_identifiers”中,则在 DB1 中添加一个列标志,其中包含 1,否则为 0。
有人可以帮我吗?当比较涉及相同的数据集时,我知道如何处理这个问题,但在与外部数据集比较时,我不知道如何处理这个问题。
data DB1; input ID$ my_identifiers$; cards; 1 345 1 45 2 678 3 432 3 432 4 7 .......... ;
data DB2; input my_identifiers_subset$; cards; 345 432 44 .......... ;
期望的输出:
data DB3; input ID$ my_identifiers$ Index$; cards; 1 345 1 1 45 0 2 678 0 3 432 1 3 432 1 4 7 0 .......... ;
先感谢您,
最好的。
因此,使用 a
proc sql
并连接 2 个数据集可能是最简单的解决方案。您有几个不同的选择。首先,您可以使用
EXISTS
带有子查询的 an 来确定是否DB1.my_identifiers
is indb2.my_identifiers_subset
。或者你可以做一个LEFT JOIN
来达到同样的效果。第二个解决方案的唯一警告是db2
可能有相同的多个实例my_identifiers_subset
,在这种情况下您会得到额外的行。其他一些执行相同操作的 SQL 查询。SAS 逻辑评估可以被分配并且具有
1
true 和0
false 值。