Sas 用第二行中的值替换第一行
我的数据集在每个唯一ID的第一行中都缺少值。我想用第二行中的值替换第一行 我的直觉告诉我,解决方法包括使用和陈述 我的数据集:Sas 用第二行中的值替换第一行,sas,Sas,我的数据集在每个唯一ID的第一行中都缺少值。我想用第二行中的值替换第一行 我的直觉告诉我,解决方法包括使用和陈述 我的数据集: ID Var1 1 . 1 12 1 23 1 2 2 . 2 266 2 23 2 2 3 . 3 6 结果我追求的是: ID Var1 1 12 1 12 1 23 1 2 2 266 2 266 2 23 2 2 3 6 3 6 尝试以下操作:步骤1:分配id行编号 步骤2:使
ID Var1
1 .
1 12
1 23
1 2
2 .
2 266
2 23
2 2
3 .
3 6
结果我追求的是:
ID Var1
1 12
1 12
1 23
1 2
2 266
2 266
2 23
2 2
3 6
3 6
尝试以下操作:步骤1:分配id行编号 步骤2:使用滞后函数并用每个id的第一个值替换第二个值
data have;
input ID Var1;
cards;
1 .
1 12
1 23
1 2
2 .
2 266
2 23
2 2
3 .
3 6
;
run;
data have1;
set have;
by id;
if first.id then sno = 0;
sno+1;
run;
proc sort data=have1 out=have2;
by id descending sno ;
run;
data have3;
set have2;
var2=lag(var1);
if var1 = . then var1 = var2;
run;
proc sort data=have3 out=want(drop=sno var2);
by id sno;
run;
如果有任何疑问,请告诉我。尝试以下操作:步骤1:分配按id排序的行号 步骤2:使用滞后函数并用每个id的第一个值替换第二个值
data have;
input ID Var1;
cards;
1 .
1 12
1 23
1 2
2 .
2 266
2 23
2 2
3 .
3 6
;
run;
data have1;
set have;
by id;
if first.id then sno = 0;
sno+1;
run;
proc sort data=have1 out=have2;
by id descending sno ;
run;
data have3;
set have2;
var2=lag(var1);
if var1 = . then var1 = var2;
run;
proc sort data=have3 out=want(drop=sno var2);
by id sno;
run;
如果有任何疑问,请告诉我。类似的内容
data want( rename=(next_var1=var1));
set have end=eof;
by id notsorted;
if first.id then do;
point = _N_ + 1;
set have (keep= var1 rename= (var1 = next_var1)) point=point;
end;
else do;
next_var1=var1;
end;
drop var1;
run;
像这样的
data want( rename=(next_var1=var1));
set have end=eof;
by id notsorted;
if first.id then do;
point = _N_ + 1;
set have (keep= var1 rename= (var1 = next_var1)) point=point;
end;
else do;
next_var1=var1;
end;
drop var1;
run;
使用两个SET语句。第二组用于“超前”处理,而不是“滞后”。第二个set语句的数据集与第一个语句相同,但偏移量为1行firstobs=2
使用两个SET语句。第二组用于“超前”处理,而不是“滞后”。第二个set语句的数据集与第一个语句相同,但偏移量为1行firstobs=2