如何在 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() 函数。
我有什么
具有 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() 函数。