以下是我拥有的数据的示例
data testretain;
input SUBJ visit parameter value vistype$ basevalue$;
cards;
01 1 1 152 screen .
01 1 2 22 screen .
01 1 3 1000 screen .
01 2 1 154 random YES
01 2 2 23 random YES
01 2 3 1005 random YES
01 3 1 155 visit .
01 3 2 21 visit .
01 3 3 1003 visit .
;
run;
我想确保value
如果basevalue
YES
被转移到每次访问
所以它看起来如下 - 这就是我希望输出看起来像
的方式 SUBJ visit parameter value vistype$ basevalue$ BASE;
01 1 1 152 screen .
01 1 2 22 screen .
01 1 3 1000 screen .
01 2 1 154 random YES 154
01 2 2 23 random YES 23
01 2 3 1005 random YES 1005
01 3 1 155 visit . 154
01 3 2 21 visit . 23
01 3 3 1003 visit . 1005
我尝试了以下代码;
data testretain1;
set testretain;
if basevalue='YES' then BASE=value;
retain BASE;
run;
但它似乎无法奏效。 1005
值会被拖到每个观察点上。
答案 0 :(得分:0)
对数据进行排序,使同一参数的所有结果在一起,然后您可以轻松使用RETAIN来解决此问题。
data want;
set have ;
by subject parameter visit;
if first.parameter then BASE=.;
if basevalue='YES' then BASE=value;
retain BASE;
run;