用SAS中的条件填充空值
如何填写不同组的空值。 我的数据如下所示:用SAS中的条件填充空值,sas,fill,Sas,Fill,如何填写不同组的空值。 我的数据如下所示: id visit status var reason 1 1 Done x1 1 1 Done x2 1 1 Done x3 1 2 Not Done x1 text1 1 2 Not Done x2 1 2 Not Done x3 1 3 Done x1 1 3 Done x2 1
id visit status var reason
1 1 Done x1
1 1 Done x2
1 1 Done x3
1 2 Not Done x1 text1
1 2 Not Done x2
1 2 Not Done x3
1 3 Done x1
1 3 Done x2
1 3 Done x3
2 1 Not Done x1 text2
2 1 Not Done x2
2 1 Not Done x3
2 2 Done x1
2 2 Done x2
2 2 Done x3
2 3 Done x1
2 3 Done x2
2 3 Done x3
输出应该是这样的
id visit status var reason
1 1 Done x1
1 1 Done x2
1 1 Done x3
1 2 Not Done x1 text1
1 2 Not Done x2 text1
1 2 Not Done x3 text1
1 3 Done x1
1 3 Done x2
1 3 Done x3
2 1 Not Done x1 text2
2 1 Not Done x2 text2
2 1 Not Done x3 text2
2 2 Done x1
2 2 Done x2
2 2 Done x3
2 3 Done x1
2 3 Done x2
2 3 Done x3
我认为这是一个相当简单的问题,但目前为止,我还无法解决它。任何帮助都将不胜感激 这是一项简单的任务,使用
by
语句时,数据步骤中存在的first.variable
功能
本质上,我已经创建了一个新变量,每当遇到新的访问时,它都会被赋值为Reason。retain
语句确保为Id和访问未更改的所有后续行复制新变量值。然后,我只需删除原始的原因变量并重命名新的原因变量
data have;
infile datalines dsd;
input id visit status &$ var $ reason $;
datalines;
1, 1, Done, x1,,
1, 1, Done, x2,,
1, 1, Done, x3,,
1, 2, Not Done, x1, text1,
1, 2, Not Done, x2,,
1, 2, Not Done, x3,,
1, 3, Done, x1,,
1, 3, Done, x2,,
1, 3, Done, x3,,
2, 1, Not Done, x1, text2,
2, 1, Not Done, x2,,
2, 1, Not Done, x3,,
2, 2, Done, x1,,
2, 2, Done, x2,,
2, 2, Done, x3,,
2, 3, Done, x1,,
2, 3, Done, x2,,
2, 3, Done, x3
;
run;
data want;
set have;
retain reason_new;
by id visit;
if first.visit then reason_new=reason;
drop reason;
rename reason_new = reason;
run;
嗯。从这个例子来看,您似乎可以这样做:如果status='Done',那么reason='text'。然而,若类别只有一个文本实体,那个么您似乎希望填充原因。如果是这样,请列出您希望如何填写的规则。我对我的问题做了一点修改。因此,我希望这个原因(未完成)与每次访问一个受试者的所有变量相同。