且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

用第二行中的值替换第一行

更新时间:2022-12-09 23:12:37

使用两个 SET 语句.第二个 SET 用于领先"处理(与滞后"相反).第二个set语句的数据集和第一个一样,只是偏移了1行(firstobs=2).

Use two SET statements. The second SET is for 'lead' processing (as opposed to 'lag'). The data set of the second set statement is the same as the first one but offset by 1 row (firstobs=2).

data have;
input ID var1;
datalines;
1   .
1   12
1   23
1   2
2   .
2   266
2   23
2   2
3   .
3   6
run;

data want;
  set have;
  by id;

  set have(firstobs=2 keep=id var1 rename=(id=lead1_id var1=lead1_var1));

  if first.id and id=lead1_id then var1=lead1_var1;

  drop lead1_id lead1_var1;
run;