在sas的一个小组内循环

时间:2015-10-26 11:40:56

标签: loops sas

我试图在sas中的一个组内循环并执行某些条件操作 我的数据集是:

组val AMT

1 A 12

1 B 06

1 A 31

2 A 77

2 A 32

3 A 43

3 B 76

4 A 32

4 B 44

4 B 23

4 B 11

我想创建一个新的变量value2为“A”或“B”,条件如下:

如果值为B,则value2为B else value2为每组01,02,03为A等等

例如,我想要的数据集是

组val AMT

1 B 12

1 B 06

1 A 31

2 A 77

2 A 32

3 B 43

3 B 76

4 B 32

4 B 44

4 B 23

4 B 11

2 个答案:

答案 0 :(得分:1)

尝试使用ifc函数,该函数根据您的条件返回一个字符值,即“B”如果为true,“A”如果为false:

data want;
  set have;
  value2=ifc(value='B','B','A');
run;

此致 阿米尔。

答案 1 :(得分:0)

您可以使用SQL获取最大值。这种格式的数据没有意义,因为缺少的是空白,而不是句号。

data have;
infile cards truncover;
input group $ value $;
cards;
01 A
01 B
01 B
02 
02 A
02 A
03 B
03 B
;

proc sql;
create table want as
select *, max(value) as value2
from have 
group by group
order by group, value, value2;
quit;