我正在使用 SAS EG 来执行此操作。这是我拥有的输入表:
ref11 ref2 Col1 Col2 Col3 Col4 Col5 Col6
A B 41 42
D E 63 65 68
X Y 23 25 55 89 99
K L 12 22
U V 22 88 11
我正在尝试将输出作为
R1 R2 C1 C2 C3 C4 C5 C6
A B 41 42
D E 63 65 68
X Y 23 25 55 57 89 99
K L 12 22
U V 22 88 11
所以基本上我的参考是 ref1 和 ref2,我想去掉每个参考的空白。例如,对于 AB,col2 为空白,因此 col3 的值应移动到 col2。
这是我现在拥有的代码。
PROC SQL;
CREATE TABLE output AS
SELECT ref1 as R1,
ref2 as R2,
(CASE WHEN col1 <> '' THEN col1 ELSE (CASE WHEN col2 <> '' THEN col2 ELSE (CASE WHEN col3 <> '' THEN col3 ELSE
(CASE WHEN col4 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) END) END) END) AS C1,
(CASE WHEN col2 <> '' AND col1 <> '' THEN col2 ELSE (CASE WHEN col3 <> '' THEN col3 ELSE
(CASE WHEN col4 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) END) END) AS C2,
(CASE WHEN col3 <> '' AND col2 <> '' AND col1 <> '' THEN col3 ELSE (CASE WHEN col4 <> '' THEN col4 ELSE
(CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END) END) END)END) AS C3,
(CASE WHEN col4 <> '' AND col3 <> '' AND col2 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) AS C4,
(CASE WHEN col5 <> '' AND col4 <> '' AND col3 <> '' AND col2 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END)AS C5
FROM input;
辞职;
这就是我得到的。
R1 R2 C1 C2 C3 C4 C5
A B 41 42 42 42
D E 63 65 68 68
X Y 23 25 55 89 99
K L 12 22 22 22
U V 22 88 11 11 11
这段代码没有给我想要的确切结果,我也认为应该有一种更简单的方法来做到这一点。请指教。