我有一个像这样的表
id -日期 ------------ 值
x --- 01/01/2019 ---- 1
y --- 01/01/2019 ---- 2
x --- 01/02/2019 ---- 1
z --- 01/03/2019 ---- 1
我正在尝试选择where id in (x,y)
然后,一旦有了该子集,我想检查x是否具有相同日期的y
new
设置为value
,将x和y都设置为id=y
-new
仅设置为value
因此表将变为
id -日期 ------------ 值-新 >
x --- 01/01/2019 ---- 1 -------- 2
y --- 01/01/2019 ---- 2 -------- 2
x --- 01/02/2019 ---- 1 -------- 1
z --- 01/03/2019 ---- 1 -------- 1
我完全不确定该怎么做
我开始对数据进行细分:
IF id='x' OR id='y' THEN DO;
/*...*/
END;
ELSE new=value;
任何帮助将不胜感激
此外,我无法在代码中使用实际日期 我不需要一般化id,我明确知道我需要比较/检查x和y(y是我正在使用的数据中x的跟进)
答案 0 :(得分:0)
我最近answered有一个类似的问题。对于这样的问题,基本SAS不太方便-使用DATA步骤解决该问题需要以正确的顺序进行排序,然后按BY
组进行读取,并retain
将数据跨行进行。
这在SQL中更容易:您可以通过将原始表(T)与自身的子集(Y)({id})放在date
上左联接来获得您所描述的预期结果。加入后,new
可以计算为coalesce(Y.value, T.value)