【发布时间】:2014-12-09 22:02:18
【问题描述】:
这是我在 SAS 的第一天。
我使用以下代码尝试创建一个标志,用于标识我的数据集中的一行何时具有字段a(字符)与前一行中的相应字段保持相同的属性,并且该字段b(字符)与上一行对应字段不同:
DATA WORK.temp1;
SET WORK.temp2;
RETAIN PREV_a
PREV_b;
IF( (PREV_a = a) AND (PREV_b NE b)) THEN DO;
FLAG = "Y";
END;
ELSE
FLAG = "N";
PREV_a = a;
PREV_b = b;
RUN;
结果是标志始终具有值“N”,即使在它应该具有值“Y”的情况下也是如此。我在前面的 DATA 步骤中手动构建的数据集上测试了代码,它在那里工作,所以我确信逻辑和语法是好的(毕竟,这非常简单)。
因此,我得出的结论是,我缺乏一些特殊的 SAS 知识,这解释了为什么在从项目流程中的前一个节点设置数据的情况下,这可能不起作用。
非常感谢任何帮助!
【问题讨论】:
-
一个问题:您是否 100% 确定
prev_a和prev_b不存在于work.temp2数据集中?它们必须不在此数据集上,否则将不起作用。 -
@Joe 我敢肯定,但尽管如此,我还是将程序指向了一个新创建的
work.temp2副本,名为work.temp3,这似乎让我找到了我需要去的地方的一部分(有关详细信息,请参阅我对 Robert Penridge 的回复。谢谢!
标签: sas