这是我写的代码。它由3个数据步骤组成。前两个工作完美,但最后一个没有做任何事情,我无法解决原因。任何帮助将非常感谢
data A.OCT_DEDUPE_LEVEL1;
set A.OCT_NOMANLOGOFFERR;
by ID_INTERNET level1 notsorted;
if first.level1 then journey=1;
run;
正如所料,上述步骤通过我的数据工作并创建一个标志,对于level1的每个第一个实例设置为1。然后,下一步将处理我的数据并将其分组到' sessions'
data A.OCT_SESSIONISE;
SET A.OCT_DEDUPE_LEVEL1;
IF level1 = 'Step1' and journey = 1 then session+1;
run;
然后,最后一步(下面)应该再次处理数据并确保每个会话中的最后一件事也被给予一个旅程标志= 1.虽然每个旅程字段的最后一步都没有发生什么保留为空。
data A.OCT_DEDUPE_SESSION;
set A.OCT_SESSIONISE;
if last.session then journey=1;
run;
任何人都会想到什么?
提前致谢
答案 0 :(得分:3)
如果查看日志,则会有一个注释:
NOTE: Variable last.session is uninitialized.
为什么呢?由于您在上一个数据步骤中没有BY
session
语句,因此您无法使用last.session
变量。
我有点好奇,你为什么要打破这个呢?这在一个数据步骤中是可行的。
data A.OCT_DEDUPE_LEVEL1;
set A.OCT_NOMANLOGOFFERR;
by ID_INTERNET level1 notsorted;
if first.level1 then do;
journey=1;
if level1='Step1' then session+1;
end;
if last.level1 then journey=1;
run;