【发布时间】:2016-07-15 16:43:12
【问题描述】:
我需要比较两个不同数据集中的两个变量,这些变量具有不同的变量名称,然后如果记录匹配,我需要在 SASYES 中写入观察结果,否则将其写入 SASNO。
我正在从 DB2 中检索记录并重命名变量。
我的 sas 代码
DATA _NULL_;
SET WORKLIST;
SET UNITFUNC;
IF PRIMNUM=CORRPMNM AND MODELCD=MCMODEL THEN DO;
FILE SASYES;
PUT @01 ANSFACT1 $CHAR7.
@09 CORRPMNM $CHAR12.
@21 MCMODEL $CHAR8.
OUTPUT SASYES;
END;
ELSE DO;
FILE SASNO;
PUT @01 ANSFACT1 $CHAR7.
@09 CORRPMNM $CHAR12.
@21 MCMODEL $CHAR8.
OUTPUT SASNO;
END;
RUN;
当我提交代码时,所有观察结果都会写入SASNO,即使它们在两个数据集中都很少有匹配的观察结果。请帮我。
注意:我曾经使用MERGE 也从两个表中读取数据,结果是相同的。
谁能帮忙?
【问题讨论】:
-
如果您可以从
WORKLIST和UNITFUNC创建小型数据集,这将有所帮助,其中至少包括一个示例,说明它何时按预期工作,至少一个示例说明它不按预期工作。 -
这个问题涵盖了同样的问题,但有一些改动:stackoverflow.com/questions/29273568/… 看看这是否也适合你。
-
是的。但我必须检查三个变量的条件。如果所有三个变量都匹配,那么它必须写入文件;你看这就是它变得复杂的地方。
-
您只是在比较代码中的两个变量。但是,通过扩展我指出的答案中的连接,您应该能够获得所需的结果。如果你添加一些关于你拥有什么和想要什么的示例数据集,那么显示实际代码可能也很容易。
-
谢谢。它现在正在工作。但我只会得到真实的数据。我将如何获得没有匹配记录的记录。我应该尝试相同的查询,而不是“equals”,我可以使用“notequals”吗?
标签: sas