如何保留 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;
我有以下数据集
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;