Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 用第二行中的值替换第一行_Sas - Fatal编程技术网

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

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的第一行中都缺少值。我想用第二行中的值替换第一行

我的直觉告诉我,解决方法包括使用和陈述

我的数据集:

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