繁体   English   中英

SAS:来自数据集的最高变量的输出

[英]SAS : Output from highest variable from dataset

我想从现有的最高n变量中分配一个新变量。 因此,如果我们的表的列数不断增加-

data have;
input uid $ var1 $ var2 $ var3 $;
datalines;                      
1111    1   0   1
2222    1   0   0
3333    0   0   0
4444    1   1   1
5555    0   0   0
6666    1   1   1
;

我想将变量var3导出为final_code。

data want;
set have;
final_code = max(of var1-var3);
run;

上面没有意义,因为我只想保留var3列。 同样,如果存在var4,我希望仅拥有var4。

有人想在这里帮助我吗?

如果我理解正确,那么您就不需要max值,而是最大编号变量中的值。

有很多方法可以做到这一点,这取决于变量的命名方式。 如果按照您所说的名称实际命名,这是最简单的。

data want;
  set have;
  array var[*] var:;
  final_code = var[dim(var)];
run;

在这里,我们用var:组成一个数组,然后使用dim (表示数组的大小)选择数组中的最后一个元素。

我认为这是您正在寻找的是:

%let n=3
data want;
set have;
var&n = max(of var1-var&n);
drop var1-var%eval(&n-1);
run;

宏变量&n保留&n的值。 在代码的编译阶段,这可以替代。

DROP语句告诉数据步骤删除那些变量。

%eval()宏函数对宏值执行整数数学运算。 因此,我们将N-1丢弃1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM