使用 COALESCE 函数合并 SAS 行

Merging SAS rows with COALESCE function

我正在尝试在 SAS 中合并以下行。这是数据:

StudentNumber   Test1   Test2   Test3
001             .       86      .
001             94      .       .
001             .       .       75
002             68      .       .
002             .       82      .
002             .       .       97

我希望行如下所示:

StudentNumber   Test1   Test2   Test3
001             94      86      75
002             68      82      97

我习惯于使用 COALESCE 函数合并列,但我不确定如何对行执行此操作。

您可以使用 UPDATE 语句来做到这一点。更新语句期望有一个源数据集,每个 BY 组都有唯一的观察结果,以及一个事务数据集,每个 BY 组可能有多个观察结果。只有交易的非缺失值才会更改值。输出将对每个 BY 组有一个观察值并应用所有交易。

您可以将现有数据用作源数据集和交易数据集,方法是将数据集选项 obs=0 添加到第一个引用。

data want;
   update have(obs=0) have;
   by studentnumber;
run;