如何在 SAS 中将两列合并为一列

How to collapse two columns into one in SAS

我有什么

具有 8 行 x4 列的数据集

"Condition" "A_1" "B_1"
A            1     .
A            3     .
A            2     .
A            4     .
B            .     4
B            .     3
B            .     5
B            .     6

[

我想要的是: What I want 1 (1)

"Condition" "A_1" "B_1"
A            1     .
A            3     .
A            2     .
A            4     .
B            4     .
B            3     .
B            5     .
B            6     .

或,(2): What I want 2

"Condition" "A_1" "B_1" "AB_1"
A            1     .     1
A            3     .     3
A            2     .     2
A            4     .     4
B            .     4     4
B            .     3     3
B            .     5     5
B            .     6     6

使用 STATA、R 和 Excel(当然)很容易,但对于我来说,我无法在 SAS 中弄清楚这个简单的事情。

我试过了,

data want;
if condition = "B" then A_1 = B_1;
set have;
run;

我也试过了

data want;
if condition = "A" then AB_1 = A_1;
else AB_1 = B_1;
set have;
run;

除了生成的 AB_1 滞后 1 行之外,第二个代码几乎可以完成工作。 什么黑客...

使用coalesce。在执行任何逻辑之前,您还需要 set 语句。 SAS 在遇到 set 语句时读取一行。

data want;
    set have;
    AB_1 = coalesce(A_1, B_1);
run;

对于(2)你可以尝试使用cats()函数

data want;
  set have;
  AB_1 = cats(A_1,B_1);
run;

但是为了连接不同类型的列,您还应该使用显式 PUT() 函数。