【发布时间】:2015-09-15 16:59:53
【问题描述】:
好的,所以我有一个客户 ID 和一个会话 ID。对于多个重复会话 ID 中的第一个,我有一个客户 ID,但对于后续的我没有。我需要将我拥有的客户 ID 复制到同一会话中的其他空白处。我的代码尝试如下:
proc sort data=weblogsnew1;
by session_id descending customer_id;
run;
data weblogsnew2;
set weblogsnew1;
by session_id descending customer_id;
if first.session_id then do until(last.session_id);
customer_id=first.customer_id;
end;
run;
这段代码无休止地旋转,但没有任何反应?我可能需要做某种 DOW 循环,但我是一个相对初学者,这让我很困惑,所以我希望有人能给我一些方向。
Session_id ...... 客户 ID
1442103120308 ..... f8d63284bc0b463a93c588fef719bee0
1442103120308 ..... 0
1442103120308 ..... 0
1442103120308 ..... 0
1442103120308 ..... 0
1442103120308 ..... 0
1442103120308 ..... 0
1442103202937 ..... 4f13e0aebdda4811834285efe9543446
1442103202937 ..... 4f13e0aebdda4811834285efe9543446
1442103202937 ..... 4f13e0aebdda4811834285efe9543446
1442103202937 ..... 4f13e0aebdda4811834285efe9543446
1442103202937 ..... 4f13e0aebdda4811834285efe9543446
1442103202937 ..... 0
1442103202937 ..... 0
1442103202937 ..... 0
1442103202937 ..... 0
1442103202937 ..... 0
1442103202937 ..... 0
1424466798849 ..... 0
1424466798849 ..... 0
1424466798849 ..... 0
在某些情况下,我只有 0,因此仅使用保留语句是行不通的。
因为我不擅长格式化这些点,所以它们只是为了将两列分开。
【问题讨论】:
-
据我了解,您不需要循环,您需要保留。如果这不正确,请发布一些示例数据以帮助澄清您的问题。
-
@Reeza 发送的链接中的retain 语句不起作用,因为在某些情况下永远不会有customer_id(即只有0),在这种情况下,以前的customer_id 会保留到新会话。我需要 customer_id 由 session_id 确定,包括它们都是 0 的情况。
标签: sas