SAS 按组保留/填充到位

  • 本文关键字:填充 保留 SAS sas
  • 更新时间 :
  • 英文 :


想知道SAS中是否有一种优雅的方法可以从拥有数据集转到想要的数据集,而无需创建其他变量(甚至是临时变量(。

基本上逻辑是向下填充一列中的值。 每个新的按组都会重新初始化进程。

data have;
input a $ val1 val2 val3;
datalines;
a 1 . .
a . . .
a . 2 .
a . . .
a . . 3
a . . . 
b . . .
b . 5 .
b . . .
;
run;  

期望的结果:

data want;
input a $ val1 val2 val3;
datalines;
a 1 . .
a 1 . .
a 1 2 .
a 1 2 .
a 1 2 3
a 1 2 3 
b . . .
b . 5 .
b . 5 .
;
run;  

您可以使用 UPDATE 语句来执行此操作。 UPDATE 语句旨在将事务应用于具有唯一键的源数据集。 您可以使用 OBS=0 数据集选项将单个数据集同时用作源数据和事务数据,因此您从空的源数据集开始。如果添加显式输出语句,则可以创建所需的结果,而不是每个组的正常观察结果。

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

最新更新