SAS为组的其余部分返回组中的第一个值

Ken*_*Ken 2 sas data-manipulation

假设我有以下数据,但我基本上想要复制a和b的第一个值,用于组中的其余值(底部的表).

例如,在组1中,a = 3中的第一个值.我想用3替换组中的2,4,1,对于变量b也是如此.

原始数据:

grp a   b
----------
1   3   2
1   2   1
1   4   2
1   1   3
2   2   4
2   1   1
2   2   2
2   3   1
Run Code Online (Sandbox Code Playgroud)

更新数据:

grp a   b
----------
1   3   2
1   3   2
1   3   2
1   3   2
2   2   4
2   2   4
2   2   4
2   2   4
Run Code Online (Sandbox Code Playgroud)

提前致谢.

小智 5

您可以使用分组处理和retain语句来执行此操作.请注意,输入数据集需要先按组排序才能生效.

data output(keep=grp a b);
  retain firsta firstb;
  set input;
  by grp;
  if first.grp then do;
    firsta = a;
    firstb = b;
  end;
  else do;
    a = firsta;
    b = firstb;
  end;
run;
Run Code Online (Sandbox Code Playgroud)