如何保留 sas 数据集中的值?

how to retain values in a sas dataset?

我有以下数据集

data have;
input pop$  district$ racemajor$;
cards;
    color   Aberdeen    .
    white   Aberdeen    .
    Black   Aberdeen    .
    Asian   Aberdeen    .
    Black   Adelaid  Yes
    Color   Adelaid     .
    white   Adelaid     .
    Asian   Adelaid     .
    White   Bellvill    .
    black   Bellvill    .
    Asian   Bellvill    .
;
run;

基本上我想拖值'Yes'如果racemajor是'Yes'相应的区所以它看起来像下面

data want;
    color   Aberdeen    .
    white   Aberdeen    .
    Black   Aberdeen    .
    Asian   Aberdeen    .
    Black   Adelaid     Yes
    Color   Adelaid     Yes
    white   Adelaid     Yes
    Asian   Adelaid     Yes
    White   Bellvill    .
    black   Bellvill    .
    Asian   Bellvill    .

我知道我可以使用 first.retain 语句来做到这一点,我尝试了以下方法。然而,它似乎不起作用。

data want;
set have;
if first.district and racemajor='Yes';
retain racemajor;
run;

试试这个,尽管为了安全起见,您应该对地区的数据进行排序

data NEW;
drop test;
SET HAVE;
by district;
retain test;
if first.district then test = racemajor;
racemajor=test;
run;

这是更新技巧的好例子,master 为空,你输出所有 obs。

data have;
   input (pop district racemajor) ($);
   cards;
    color   Aberdeen    .
    white   Aberdeen    .
    Black   Aberdeen    .
    Asian   Aberdeen    .
    Black   Adelaid  Yes
    Color   Adelaid     .
    white   Adelaid     .
    Asian   Adelaid     .
    White   Bellvill    .
    black   Bellvill    .
    Asian   Bellvill    .
;;;;
   run;
proc print;
   run;
data want;
   update have(obs=0) have;
   by district;
   output;
   run;
proc print;
   run;